Post запрос через прокси (PHP)

Discussion in 'PHP' started by RaiDeRz, 4 Jun 2007.

  1. RaiDeRz

    RaiDeRz Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    121
    Likes Received:
    5
    Reputations:
    0
    Как сделать Post запрос через прокси на Php )
    Дайте пример
     
  2. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Вот держи
    PHP:
    $proxy    '127.0.0.1';
    $port     80;

     @
    $fsock    fsockopen($proxy ,$port,$errnum,$errstr,5);
      if (!
    $fsock)   
      die (
    "Увы, или прокся дохлая или истекло время ожидания ответа от нее...(((");
      else {
      
    $POST_to_GET "to=123&for=123";
    $len strlen($POST_GET);
    $request  "POST http://site.ru/index.php HTTP/1.0\n";
    $request .="Host: site.ru\n";
    $request .="Content-Type: application/x-www-form-urlencoded\n";
    $request .="Content-Length: $len \r\n\r\n";
    $request .=$POST_to_GET."\r\n";
       
    fwrite   ($fsock,$request);
    $head '';
    while(!
    feof($fsock))
    {
    $fgets=fgets($fsock,500); 
    if (
    $fgets=="\r\n" || $fgets=="\n")
    {break;} 
    $head.=$fgets;}
    $content '';
    while(!
    feof($fsock))
    {
    $content .=fread($fsock,2048);}
    fclose($fsock);
    Только там может не много косячить из-за зоголовка, ну я думаю ты сможешь сделать все супер, ты же не маленький...)))
     
  3. RaiDeRz

    RaiDeRz Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    121
    Likes Received:
    5
    Reputations:
    0
    А куда тогда вписывать хост и порт куда надо подключиться?
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    <?
    $proxy "1.1.1.1"
    $port "8080";

    $fp fsockopen($proxy$port$errno$errstr30); 
    if(
    $fp)
    {
        
    $data        "post=ok";
        
    $headers  "POST $path HTTP/1.1\r\n"
        
    $headers .= "Host: $hostname\r\n"
        
    $headers .= "Content-type: application/x-www-form-urlencoded\r\n";
        
    $headers .= "Content-Length: ".strlen($data)."\r\n";
        
    $headers .= "Connection: close\r\n\r\n";
         
        
    $fw fwrite($fp$headers.$data);
        
    fclose($fp);
    } else die;
    ?> 
     
    #4 banned, 4 Jun 2007
    Last edited: 4 Jun 2007
  5. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Прокси и порт в $proxy & $port :)
    Хост в заголовках передавай "Host: www.bla.ru \r\n"
     
  6. RaiDeRz

    RaiDeRz Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    121
    Likes Received:
    5
    Reputations:
    0
    А вот как сделать так чтобы через эту проксю можно было подключиться на другой порт не 80 ?
     
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    В переменной $port поменять )
     
  8. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    Здесь скорее всего имелось ввиду, чтоб через 80-ый порт проксика подключиться на другой порт(не 80) какого-то ресурса
     
  9. kys

    kys New Member

    Joined:
    14 May 2007
    Messages:
    10
    Likes Received:
    4
    Reputations:
    0
    Так:
    POST http://site:port HTTP/1.1
    т.е. после названия сайта через двоеточие номер порта
     
    #9 kys, 5 Jun 2007
    Last edited: 5 Jun 2007
    1 person likes this.
  10. SIBON

    SIBON Banned

    Joined:
    13 Jul 2006
    Messages:
    13
    Likes Received:
    1
    Reputations:
    0
    а как считать ответ сервера на этот запрос?
     
    #10 SIBON, 6 Jun 2007
    Last edited: 6 Jun 2007
  11. kys

    kys New Member

    Joined:
    14 May 2007
    Messages:
    10
    Likes Received:
    4
    Reputations:
    0
    в каком смысле как?
    после посылки запроса просто читаешь из того же сокета и все. выше в примере это есть.
     
    #11 kys, 6 Jun 2007
    Last edited: 6 Jun 2007