Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

15.12.2008, 20:52
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
fsockopen()+proxy
PHP код:
<?
set_time_limit(0);
$host = '189.47.129.62';
$port = '6588';
$fp = fsockopen("tcp://".$host, $port) or die ("ERROR: Could not connect to proxy server $host on port $port");
fputs($fp, "CONNECT pop3.mail.ru:110 HTTP/1.0\r\n\r\n");
$response = '';
$line = fgets($fp, 10240);
$response = $line;
echo $response;
fclose ($fp);
?>
Вернет:
Код:
X-Powered-By: PHP/5.2.0
Content-type: text/html
HTTP/1.1 200 Connection established
т.е. соединение установлено.
Как дальше продолжить общение, через сокет (естественно через прокси), с pop3.mail.ru?
P.S. Curl не предлогать
Последний раз редактировалось preda1or; 15.12.2008 в 21:01..
|
|
|

15.12.2008, 21:07
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
|
|
|

15.12.2008, 21:09
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
Там GET/POST запросы = это не то.
|
|
|

15.12.2008, 21:20
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
"Как дальше продолжить общение, через сокет (естественно через прокси), с pop3.mail.ru?"
конкретизируй задачу, ТС, а то туманно всё как-то
|
|
|

15.12.2008, 21:22
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
Нужно "общение" с POP3 сервером, через прокси, и всё это через сокеты.
|
|
|

15.12.2008, 21:29
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
http://ru2.php.net/fsockopen
CTRL+F "prox"
вроде там всё есть. Задачу ты конкретизировал конкретно  А вот пример работы с pop3
PHP код:
The following function performs pop3 authentication. Returns NULL on error, or true/false to indicate username/password matching:
$address is the hostname of the server and $ssl is a boolean that indicates whether an SSL connection is requested.
<?php
function pop3authCheck($username, $password, $address, $ssl)
{
if ($ssl)
$uri="ssl://$address:995";
else
$uri="tcp://$address:110";
$fp=fsockopen($uri);
if (!$fp)
return(NULL);
$st=fgets($fp, 512);
if (substr($st, 0, 3)!="+OK")
{
fclose($fp);
return(NULL);
}
$st="USER $username\n";
if (fwrite($fp, $st)!=strlen($st))
{
fclose($fp);
return(NULL);
}
$st=fgets($fp, 512);
if (substr($st, 0, 3)!="+OK")
{
fclose($fp);
return(NULL);
}
$st="PASS $password\n";
if (fwrite($fp, $st)!=strlen($st))
{
fclose($fp);
return(NULL);
}
$st=fgets($fp, 512);
fclose($fp);
if (substr($st, 0, 3)=="+OK")
return(true);
else if (substr($st, 0, 4)=="+ERR")
return(false);
else
return(NULL);
}
?>
Последний раз редактировалось Pashkela; 15.12.2008 в 21:33..
|
|
|

15.12.2008, 21:31
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
Как реализовать POP3 аутентификацию я знаю.
Мне нужно это пустить через прокси, с которым я общаюсь через fsockopen();
Я не знаю что посылать прокси серверу через сокет, чтобы он посылал и принимал команды от POP3 сервера.
|
|
|

15.12.2008, 21:34
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 413
Провел на форуме: 1301036
Репутация:
1334
|
|
Попробуй так
PHP код:
$mailserver = "сервер";
$user = "логин";
$pass = "пасс";
$mailto = "мыло";
$host = '189.47.129.62';
$port = '6588';
$id=Base64_Encode("login:pass");
$fp = fsockopen($host, $port)
or die ("ERROR: Could not connect to proxy server $host on port $port");
fputs($fp, "CONNECT $mailserver:25 HTTP/1.0 \r\n");
fputs($fp, "Proxy-Authorization: Basic $id\r\nConnection: close\r\n\r\n");
fputs($fp, "EHLO nm.ru\r\n");
fputs($fp, "AUTH LOGIN\r\n");
fputs($fp, base64_encode($user)."\r\n".base64_encode($pass)."\r\n");
fputs($fp, "MAIL FROM: $user\r\n");
fputs($fp, "RCPT TO: $mailto\r\n");
fputs($fp, "DATA\r\n");
fputs($fp, "Subject: bla\r\n");
fputs($fp, "From: логин <login@nm.ru>\r\n\r\n");
fputs($fp, "text.\r\n\r\n");
fputs($fp, ".\r\n");
echo fread($fp,1024)."<br>";
fputs($fp, "QUIT\r\n");
/*
*/
fclose ($fp);
|
|
|

15.12.2008, 21:35
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
после того как прокси сообщит, что соединение установлено ты можешь слать ему все как будто это и есть POP3 сервер. И соответственно принимать
|
|
|

15.12.2008, 21:35
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
ну вот тебе проверка ICQ статуса через прокси, алгоритм должен быть одинаковый, мне лень проверять
PHP код:
Additional ICQ status request over proxy
<?php
function icq_uin($uin)
{
if (! is_numeric($uin))
return false;
$proxy_name = 'proxy.mydomain.de';
$proxy_port = 8080;
$proxy_user = "";
$proxy_pass = "";
$proxy_cont = '';
$request_url = "http://status.icq.com/online.gif?icq=$uin";
$proxy_fp = fsockopen($proxy_name, $proxy_port);
if (!$proxy_fp)
return false;
fputs($proxy_fp, "GET $request_url HTTP/1.0\r\nHost: $proxy_name\r\n");
fputs($proxy_fp, "Proxy-Authorization: Basic ". base64_encode ("$proxy_user:$proxy_pass")."\r\n\r\n");
while(!feof($proxy_fp)){
$proxy_cont .= fread($proxy_fp,4096);
}
fclose($proxy_fp);
$proxy_cont = substr($proxy_cont, strpos($proxy_cont,"\r\n\r\n")+4);
if (strstr($proxy_cont, 'online1'))
return 'online';
if (strstr($proxy_cont, 'online0'))
return 'offline';
if (strstr($proxy_cont, 'online2'))
return 'disabled';
}
echo "User is ".icq_uin(123456789012345);
?>
Based on http://de2.php.net/manual/de/function.fopen.php#53090
Thanx
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|