Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Post/get запрос через прокси (https://forum.antichat.xyz/showthread.php?t=38577)

beerbear 22.04.2007 02:51

Post/get запрос через прокси
 
Есть, например, такой запрос:

Код:

<?
    $proxy = "217.219.192.69";
    $port = "80";

    $host = "http://site.ru";
    $path = "/";

   

    $fp =  @fsockopen($proxy, $port, $errno, $errstr, 10);
    if($fp)
    {
        $headers = "GET $path HTTP/1.1\r\n";
        $headers.= "Host: $host\r\n";
        $headers.= "Connection: Close\r\n\r\n";

        fwrite($fp, $headers);
        while(!feof($fp))
        {
            echo fread($fp,1024);
        }
        fclose($fp);
    }
    else
    {
        echo "$errno $errstr";
    }
?>


Как сделать, чтобы прокси брались из файла, например, proxy.txt, потом разделялись на прокси и порт, проверялись, если нормально - юзались в запросе, если нет - бралась следующая строка из proxy.txt?

Спасибо!

Isis 22.04.2007 03:08

PHP код:

$file file('proxies.txt'); // Файл с проксями
list($proxy$port) = explode(":"trim($file)); // Теперь $proxy -  сервер прокси, до двоеточия, а порт = порт, после двоеточия 


mR_LiNK[deface_0nl 22.04.2007 04:17

Цитата:

Сообщение от Isis
PHP код:

$file file('proxies.txt'); // Файл с проксями
list($proxy$port) = explode(":"trim($file)); // Теперь $proxy -  сервер прокси, до двоеточия, а порт = порт, после двоеточия 


ну или так::
PHP код:

//массив проксей (в файле прокси разделены '\n'), порт и хост разделены ':'
$f_proxy fopen('proxy.txt'r);
$proxy fread($f_proxy65000);
$proxy_server explode("\n"$proxy);
$n=count($proxy_server);
for (
$i=0$i<=count($proxy_server)-1$i++)
 {
  
$proxy_serv[$i] = explode(":"$proxy_server[$i]);
 }
fclose($f_proxy); 

Здесь ты получаешь из файла 'proxy.txt' двумерный массив ($proxy_serv) вида:
Код HTML:

array [1 => 1 - ip
                  2 - port
          2 => ...]

PHP код:

<?
    $host 
"http://site.ru";
    
$path "/";

//массив проксей (в файле прокси разделены '\n'), порт и хост разделены ':'
$f_proxy fopen('proxy.txt'r);
$proxy fread($f_proxy65000);
$proxy_server explode("\n"$proxy);
$n=count($proxy_server);
for (
$i=0$i<=count($proxy_server)-1$i++)
 {
  
$proxy_serv[$i] = explode(":"$proxy_server[$i]);
 }
fclose($f_proxy);

for (
$i=0$i<count($proxy_serv); $i++)
{
    
$fp =  fsockopen($proxy_serv[$i][1], $proxy_serv[$i][2], $errno$errstr10);
    if(
$fp)
   
// ;) 
    
{
        
$headers "GET $path HTTP/1.1\r\n";
        
$headers.= "Host: $host\r\n";
        
$headers.= "Connection: Close\r\n\r\n";

        
fwrite($fp$headers);
        while(!
feof($fp))
        {
            
$rez_data fread($fp,1024);
           
// здесь код для обработки ответа
          //...
        
}
        
fclose($fp);
    }
    else
    {
        echo 
"$errno $errstr";
    }
}
?>

зы::Разницы никакой, 2-ой код используется в начале скрипта, а далее использйется массив, 1-ый код использутся каждый раз в при открытиии сокета.

blackybr 22.04.2007 11:20

2ой более экономичный к ресурсам =)

beerbear 24.04.2007 23:36

Че-то нифига у меня не получается...

Скрипт такой:

Код:

<?php

$usver = file("names.txt");
$parol = file("pass.txt");

foreach ($usver as $i=>$v) {
$hostname = "site.com";
$path = "/login";
$line = "";


  $fp = fsockopen($hostname, 80, $errno, $errstr, 30);
  if (!$fp) echo "$errstr ($errno)<br />\n";
  else
  {
//пошел пост запрос
//...............
//..............
}
fclose($fp);



//потом гет запрос
//...............
//..............

//потом еще один пост запрос
//...............
//..............

Пытался сделать, чтобы каждый пользователь, типа, подключался под разным IP.
Ткните носом, где посмотреть конкретный пример с использованием списка проксей из файлика и проверкой их на коннект.

Или, если кому не влом, приведите код тут.
С меня репа! Спасибо!

mR_LiNK[deface_0nl 24.04.2007 23:59

2) ВЫШЕ я уже приводил код использование списка прокси, хранящихся в файле
PHP код:

$f_proxy fopen('proxy.txt'r); 
$proxy fread($f_proxy65000); 
$proxy_server explode("\n"$proxy); 
$n=count($proxy_server); 
for (
$i=0$i<=count($proxy_server)-1$i++) 
 { 
  
$proxy_serv[$i] = explode(":"$proxy_server[$i]); 
 } 
fclose($f_proxy); 

На выходе ты получаешь массив $proxy_serv
далее его и используешь, код вывода разных проксей из массива я приводил выШЕ!! (в цикле)

проверка на соединение ты и так уже написал::
PHP код:

...
if (!
$fp) echo "$errstr ($errno)<br />\n";
... 

можно также дополнить времением ожидания ответа..

зы:: по поводу первого сорь, обознался, перепутал file() с fread()..

beerbear 25.04.2007 00:05

Не понял. Скрипт выдирает из файлов переменные построчно и юзает их. я привел код скрипта не полностью, а для примера.
Без проксей все работает на ура. Сейчас хочу, чтобы подключался через проксю. Пробовал заюзать код выше - не получается.

mR_LiNK[deface_0nl 25.04.2007 00:13

Цитата:

Сообщение от beerbear
Не понял. Скрипт выдирает из файлов переменные построчно и юзает их. я привел код скрипта не полностью, а для примера.
Без проксей все работает на ура. Сейчас хочу, чтобы подключался через проксю. Пробовал заюзать код выше - не получается.

что именно не получается???
выложи код!
выложи ошибки!!

если не хочешь выкладывать здесь, стучи в асю, посмотрим что не так

зы:: пост ниже кстати, верен тоже, этот параметр необходим

SMiX 25.04.2007 00:19

Нужен хеадер
Proxy-Connection: close

mR_LiNK[deface_0nl 25.04.2007 12:05

2beerbear
тебе сюда http://www.forum.antichat.ru/thread38811.html

зы: много лучше, чем то что выше!


Время: 15:46