The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
PHP fsockopen через прокси , !*! Summoner, 12-Апр-09, 21:29  [смотреть все]
Проблема следующего рода... если приходится открывать соединение через прокси (Серию прокси) выдается ошибка при попытки получения контента с сайта (В случае если он https)
вот написал простейший  код что бы проверить может гдето запутался тут тоже самое:
$proxy = '62.94.22.204';
$proxy_port = '8080';
$host = 'banking.ukrgarant.com';
$host_port = '443';
$fp = @fsockopen($proxy, $proxy_port);
if ($fp)
{
    fputs($fp, 'CONNECT '.$host.':'.$host_port.' HTTP/1.1'."\r\n");
    fputs($fp, 'Connection: Close'."\r\n\r\n");
    fputs($fp, 'GET / HTTP/1.1'."\r\n");
    fputs($fp, 'Host: banking.ukrgarant.com'."\r\n");
    fputs($fp, 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8'."\r\n");
    fputs($fp, 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'."\r\n");
    fputs($fp, 'Accept-Language: ru,en-us;q=0.7,en;q=0.3'."\r\n");
    fputs($fp, 'Accept-Encoding: gzip,deflate'."\r\n");
    fputs($fp, 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'."\r\n");
    fputs($fp, 'Keep-Alive: 300'."\r\n");
    fputs($fp, 'Connection: keep-alive'."\r\n");
    fputs($fp, 'Cookie: PHPSESSID=uioiaatus86u713jpchi31r8o0'."\r\n");
    fputs($fp, 'Cache-Control: max-age=0'."\r\n");
    fputs($fp, 'Connection: Close'."\r\n\r\n");
    while(!feof($fp))
    {
        echo fgets($fp, 4096);
    }
}

Вот ответ сервера
HTTP/1.1 400 Bad Request Date: Sun, 12 Apr 2009 17:21:48 GMT Server: Apache/2.2.3 (CentOS) Content-Length: 226 Connection: close Content-Type: text/html; charset=iso-8859-1
Bad Request

Your browser sent a request that this server could not understand.


Подскажите плз что я делаю неправильно.

Заранее благодарен.

  • PHP fsockopen через прокси , !*! svn, 00:26 , 13-Апр-09 (1)
    >Подскажите плз что я делаю неправильно.

    connect это отдельный запрос к прокси.

    Не надо в него впихивать запрос к сервису. Это 2 разные запроса.
    Сначала connect, а уж потом (после успешного ответа) можно посылать http запросы.

    • PHP fsockopen через прокси , !*! Summoner, 08:50 , 13-Апр-09 (2)
      Изменил скрип получилось теперь вот так

      $proxy = 'XXX.XXX.XXX.XXX';
      $proxy_port = '3128';
      $host = 'banking.ukrgarant.com';
      $host_port = '443';
      $fp = @fsockopen($proxy, $proxy_port);
      if ($fp)
      {
          $query = 'CONNECT '.$host.':'.$host_port.' HTTP/1.1'."\r\n";
          $query .= 'Connection: Close'."\r\n\r\n";
              fputs($fp, $query);
              echo $query;
          while(!feof($fp))
          {
              $t = fgets($fp, 1024);
              echo $t."<br/>";
              if ($t == "\r\n")
              {
                  break;
              }
          }
          
          $query = 'GET / HTTP/1.1'."\r\n";
          $query .= 'Host: banking.ukrgarant.com'."\r\n";
          $query .= 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8'."\r\n";
          $query .= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'."\r\n";
          $query .= 'Accept-Language: ru,en-us;q=0.7,en;q=0.3'."\r\n";
          $query .= 'Accept-Encoding: gzip,deflate'."\r\n";
          $query .= 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'."\r\n";
          $query .= 'Keep-Alive: 300'."\r\n";
          $query .= 'Connection: keep-alive'."\r\n";
          $query .= 'Cookie: PHPSESSID=uioiaatus86u713jpchi31r8o0'."\r\n";
          $query .= 'Cache-Control: max-age=0'."\r\n";
          $query .= 'Connection: Close'."\r\n\r\n";
          fputs($fp, $query);
          echo $query;
          while(!feof($fp))
          {
              echo fgets($fp, 4096);
          }
      }

      Результат выполнения такой
      CONNECT banking.ukrgarant.com:443 HTTP/1.1
      Connection: Close

      GET / HTTP/1.1
      Host: banking.ukrgarant.com
      User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      Accept-Language: ru,en-us;q=0.7,en;q=0.3
      Accept-Encoding: gzip,deflate
      Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
      Keep-Alive: 300
      Connection: keep-alive
      Cookie: PHPSESSID=uioiaatus86u713jpchi31r8o0
      Cache-Control: max-age=0
      Connection: Close

      Bad Request

      Your browser sent a request that this server could not understand.
      Reason: You're speaking plain HTTP to an SSL-enabled server port.
      Instead use the HTTPS scheme to access this URL, please.

          Hint: https://banking.ukrgarant.com/

      Apache/2.2.3 (CentOS) Server at banking.ukrgarant.com Port 443


      Что-то опять не то...



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру