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); ?> Вернет: Code: X-Powered-By: PHP/5.2.0 Content-type: text/html HTTP/1.1 200 Connection established т.е. соединение установлено. Как дальше продолжить общение, через сокет (естественно через прокси), с pop3.mail.ru? P.S. Curl не предлогать
"Как дальше продолжить общение, через сокет (естественно через прокси), с pop3.mail.ru?" конкретизируй задачу, ТС, а то туманно всё как-то
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); } ?>
Как реализовать POP3 аутентификацию я знаю. Мне нужно это пустить через прокси, с которым я общаюсь через fsockopen(); Я не знаю что посылать прокси серверу через сокет, чтобы он посылал и принимал команды от POP3 сервера.
Попробуй так 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);
после того как прокси сообщит, что соединение установлено ты можешь слать ему все как будто это и есть POP3 сервер. И соответственно принимать
ну вот тебе проверка 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
PHP: <? set_time_limit(0); $host = '213.55.69.124'; $port = '6588'; // 4480 is the default HTTP proxy port $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; fputs($fp,"USER login\r\n"); $line = fgets($fp, 10240); $response = $line; echo $response; fclose ($fp); ?> Не работает...
А что в твоем понимании "не то"??? Чем тебе GET не угодил? Бред какой-то. Скажи КОНКРЕТНО, чо те надо, а то опять напустил тумана. Брутить мыло через прокси собрался? Или что? Чо за тайны мадридского двора?