Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Перебор проксей из массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
xsh
Отправлено: 15 Августа, 2011 - 16:17:14
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Просьба помочь с проблемой подвисания скрипта, а именно как я понял не осуществляется переключение на новый прокси если не приходит ответ или приходит ответ с ошибкой.
На деле все выглядит так что скрипт выдает результаты, пока прокси не банится, после этого прокси не переключается на новый из массива проксей, и работа скрипта не продолжается. Если же остановить скрипт и почистить в листе проксей пару-тройку проксей, и перезапустить скрипт, то работа продолжается до следующего подвисания.
Цель скрипта чтобы он обработал все строки из файла url.txt, а прокси перебирались по порядку, по кругу пока весь файл url.txt не будет обработан. Спасибо.

PHP:
скопировать код в буфер обмена
  1. $urll = 'url.txt';
  2. $file = file($urll, FILE_IGNORE_NEW_LINES);
  3. $proxylist = 'proxy.txt'; // по одному прокси на строку
  4.  
  5. function get($url, $prox)
  6. {
  7.     $ch = curl_init();
  8.     curl_setopt($ch, CURLOPT_URL, $url);
  9.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.     curl_setopt ($ch, CURLOPT_TIMEOUT, 5);
  11.     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
  12.     curl_setopt($ch, CURLOPT_PROXY, "$prox");
  13.     $ss=curl_exec($ch);
  14.     curl_close($ch);
  15.     return $ss;
  16. }
  17.  
  18. $prox = array();
  19. if( is_file($proxylist))
  20. {
  21. $handle = fopen($proxylist, "r");
  22. while (($data = fgetcsv($handle, 40)) !== FALSE)
  23. {
  24. $prox[] = $data[0];
  25. }
  26. }
  27.  
  28. foreach( $prox as $proxy ){
  29. foreach( $file as $n ){
  30. $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $proxy);
  31.      if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$content,$match) or preg_match('/по состоянию на (.*)? GMT/',$content,$match)){
  32.      print("$n $match[1]\n");
  33.      file_put_contents("cache_date.txt","$n $match[1]\n", FILE_APPEND);
  34.     }
  35. }
  36. }


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Elio
Отправлено: 15 Августа, 2011 - 16:34:49
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2011  
Откуда: Hell


Помог: 0 раз(а)




ммм... а что пишет
curl_getinfo($ch) ?
PHP:
скопировать код в буфер обмена
  1. $info = curl_getinfo($ch);
  2. $error = curl_error($ch).'('.curl_errno($ch).')'.' ['.$info['http_code'].']';


И вопрос по логике скрипта... сейчас на сколько я понял: есть 10 прокси и 100 строк поиска.
Скрипт берёт 1 прокси и прогоняет все 100 строк. Потом берёт второй прокси и прогонят ещё 100 строк. Надо на выходе получить пройденных 1000 строк или надо просто обойти 100 строк, но с подменой ip при его бане?

(Отредактировано автором: 15 Августа, 2011 - 16:41:48)

 
 Top
xsh
Отправлено: 15 Августа, 2011 - 16:53:51
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Elio пишет:
ммм... а что пишет
curl_getinfo($ch) ?
извиняюсь за криворукость, но не понял куда вставить код, чтобы что-то толковое вышло.
Elio пишет:
И вопрос по логике скрипта... сейчас на сколько я понял: есть 10 прокси и 100 строк поиска.

если точнее примерно 500 строк прокси и 1000 строк url
Elio пишет:
Скрипт берёт 1 прокси и прогоняет все 100 строк. Потом берёт второй прокси и прогонят ещё 100 строк. Надо на выходе получить пройденных 1000 строк или надо просто обойти 100 строк, но с подменой ip при его бане?
На выходе надо пройти все строки из url.txt и без разницы сколько на это прокси потребуется, вполне может быть и так что по 1 прокси на запрос, а потом просто по кругу прокси идут из массива, если их меньше чем url. главное чтобы при неполучении нужного ответа от прокси или просто при неполучении какого либо ответа, ip менялся на следующий, а url оставался прежний пока ответ не будет получен. по окончании и прохождения всех элементов из массива формируемого из url.txt скрипт завершает работу. постарался объяснить как можно подробнее.


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Elio
Отправлено: 16 Августа, 2011 - 08:47:10
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2011  
Откуда: Hell


Помог: 0 раз(а)




Предыдущий код надо вставить после 13ой строки.
Быстры фикс данной программы:
Добавить условия перехода к следующему итератору прокси, при получении страницы с ошибкой.
Действия:
1) Выяснить какой текст выводит страница с ошибкой. После 14той строки вставить

записываем последнюю скачанную страницу в файл put.html, что-бы потом посмотреть как выглядит страницу на которой виснет скрипт.
2) заменить ненужный цикл прокси с 28й строки по 35 на:
PHP:
скопировать код в буфер обмена
  1. foreach( $file as $n ){
  2.     $content="";
  3.     while(strlen($content)<1){
  4.                 $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $prox[0]);
  5.             if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$content,$match) or preg_match('/по состоянию на (.*)? GMT/',$content,$match)){
  6.                         print("$n $match[1]\n");
  7.                         file_put_contents("cache_date.txt","$n $match[1]\n", FILE_APPEND);
  8.                 }
  9.                 elseif($content=='') array_shift ($prox);
  10.         }
  11. }

если мы не нашли на странице того что искали. Проверяем получена ли вообще страница. если нет то удаляем одну строку прокси и следующий запрос уже отправляем с другим прокси. (когда узнаешь, что ты получаешь на плохой странице, то в условие elseif нужно будет добавить поиск уникального текста который есть только на "плохой" странице и при ее нахождении менять прокси.)
3) Добавить после 12ой строки:
PHP:
скопировать код в буфер обмена
  1. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, WAITING_TIME);
  2.         curl_setopt($curl, CURLOPT_TIMEOUT, WAITING_TIME);

где вместо WAITING_TIME указать время в секундах, которое скрипту нужно ожидать до получения ответа от сервера. (защита от долгой загрузки страницы.) время варьируется от качества прокси у меня стоит 25.
4) while(strlen($content)<1) добавлен для того, чтобы не получить ответ на каждую строку запроса. (опять же надо смотреть какой возвращается ошибочная страница и заменит здесь условие) в моём примере предполагается, что страница возвращается пустой.
 
 Top
xsh
Отправлено: 16 Августа, 2011 - 10:11:55
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Elio спасибо большое, сейчас попробую.
(Добавление)
Elio пишет:
if(file_exists('put.html')unlink('put.html');
file_put_contents('put.html', $text);

тут вроде скобки не хватает, но все равно ошибку выдает PHP Parse error: syntax error, unexpected T_STRING


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Elio
Отправлено: 16 Августа, 2011 - 11:11:41
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2011  
Откуда: Hell


Помог: 0 раз(а)




прошу прощения... тут это должно выглядеть так:

а в какой строке он выдаёт ошибку?
 
 Top
xsh
Отправлено: 16 Августа, 2011 - 11:13:13
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Elio пишет:
прошу прощения... тут это должно выглядеть так:

а в какой строке он выдаёт ошибку?

в этой
(Добавление)
уже работает, файл put.html пишется.
(Добавление)
PHP:
скопировать код в буфер обмена
  1.     $urll = 'url.txt';
  2.     $file = file($urll, FILE_IGNORE_NEW_LINES);
  3.     $proxylist = 'proxy.txt'; // по одному прокси на строку
  4.      
  5.     function get($url, $prox)
  6.     {
  7.         $ch = curl_init();
  8.         curl_setopt($ch, CURLOPT_URL, $url);
  9.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
  11.         curl_setopt($ch, CURLOPT_PROXY, "$prox");
  12.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  13.         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  14.         $ss=curl_exec($ch);
  15.         $info = curl_getinfo($ch);
  16.         $error = curl_error($ch).'('.curl_errno($ch).')'.' ['.$info['http_code'].']';
  17.         curl_close($ch);
  18.         if(file_exists('put.html'))unlink('put.html');
  19.         file_put_contents('put.html', $ss);
  20.         return $ss;
  21.     }
  22.      
  23.     $prox = array();
  24.     if( is_file($proxylist))
  25.     {
  26.     $handle = fopen($proxylist, "r");
  27.     while (($data = fgetcsv($handle, 40)) !== FALSE)
  28.     {
  29.     $prox[] = $data[0];
  30.     }
  31.     }
  32.      
  33.     foreach( $file as $n ){
  34.         $content="";
  35.         while(strlen($content)<1){
  36.                     $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $prox[0]);
  37.                 if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$content,$match) or preg_match('/по состоянию на (.*)? GMT/',$content,$match)){
  38.                             print("$n $match[1]\n");
  39.                             file_put_contents("cache_date.txt","$n $match[1]\n", FILE_APPEND);
  40.                     }
  41.                     elseif($content=='') array_shift ($prox);
  42.             }
  43.     }

все верно?
(Добавление)
итак один из вариантов ошибки из put.html. думаю не единственный.
CODE (html):
скопировать код в буфер обмена
  1. <TITLE>302 Moved</TITLE></HEAD><BODY>
  2. <H1>302 Moved</H1>
  3. The document has moved

(Добавление)
если прописать:
PHP:
скопировать код в буфер обмена
  1.            elseif($content=='<TITLE>302 Moved</TITLE>') array_shift ($prox);

то что вписать в

?
(Добавление)
и что делать если обнаружится не одна а несколько ошибок? сейчас пытаюсь другие выявить.
(Добавление)
а 302 ошибку отдает гугл когда банит прокси, он переадресует на страницу вида http://www[dot]google[dot]com/sorry/?con[dot][dot][dot]arch?q=cache:URL ну и "Мы зарегистрировали подозрительный трафик, исходящий из вашей сети. Повторите запрос позднее."
прокси при этом не переключается на новый, и скрипт виснет. сейчас тоже не переключается. наверное потому что elseif не прописал

(Отредактировано автором: 16 Августа, 2011 - 11:28:48)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Elio
Отправлено: 16 Августа, 2011 - 12:42:19
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2011  
Откуда: Hell


Помог: 0 раз(а)




$content=='<TITLE>302 Moved</TITLE>' - не подействует... тк html страница отличается от это записи. но смысл правильный.
elseif($content=='' OR strpos($content, '302 Moved') !== false) http://www.php.su/array_shift " target="_blank">array_shift ($prox);
и также ещё кучу условий можно впихнуть через "OR" или "||".
ещё не плохо бы было поставить условие, что у нас могут закончится прокси.
if(count($prox)==0) $prox=get_proxy(); ссылку на функцию присвоения прокси.

PHP:
скопировать код в буфер обмена
  1. function get_proxy(){
  2.         $proxylist = 'proxy.txt';
  3.         $prox = array();
  4.     if(is_file($proxylist)){
  5.                 $handle = fopen($proxylist, "r");
  6.         while (($data = fgetcsv($handle, 40)) !== FALSE) $prox[] = $data[0];
  7.                 fclose($handle);
  8.                 return $prox;
  9.     }
  10.         else return false;
  11. }

изначально в коде не было fclose($handle).
while я думаю в данном скрипте можно не трогать. но можно подменить его проверку. те когда мы получаем ошибку 303. то $content будет по strlen больше 1, а нам надо чтобы скрипт прошёл строку ещё раз, но с другим прокси. поэтому пишем:
PHP:
скопировать код в буфер обмена
  1. elseif($content=='' OR strpos($content, '302 Moved') !== false) {
  2.      array_shift ($prox);
  3.      $content='';
  4. }

(Отредактировано автором: 16 Августа, 2011 - 12:42:42)

 
 Top
xsh
Отправлено: 16 Августа, 2011 - 13:49:29
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Elio проверь пожалуйста, вот такой код вышел:
PHP:
скопировать код в буфер обмена
  1.  $urll = 'url.txt';
  2.     $file = file($urll, FILE_IGNORE_NEW_LINES);
  3.      
  4.     function get($url, $prox)
  5.     {
  6.         $ch = curl_init();
  7.         curl_setopt($ch, CURLOPT_URL, $url);
  8.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
  10.         curl_setopt($ch, CURLOPT_PROXY, "$prox");
  11.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
  12.         curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  13.         $ss=curl_exec($ch);
  14.         $info = curl_getinfo($ch);
  15.         $error = curl_error($ch).'('.curl_errno($ch).')'.' ['.$info['http_code'].']';
  16.         curl_close($ch);
  17.         if(file_exists('put.html'))unlink('put.html');
  18.         file_put_contents('put.html', $ss);
  19.         return $ss;
  20.     }
  21.      
  22.     function get_proxy(){
  23.             $proxylist = 'proxy.txt';
  24.             $prox = array();
  25.         if(is_file($proxylist)){
  26.                     $handle = fopen($proxylist, "r");
  27.             while (($data = fgetcsv($handle, 40)) !== FALSE) $prox[] = $data[0];
  28.                     fclose($handle);
  29.                     return $prox;
  30.         }
  31.             else return false;
  32.     }
  33.      
  34.     foreach( $file as $n ){
  35.         $content="";
  36.         while(strlen($content)<1){
  37.                     $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $prox[0]);
  38.                 if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$content,$match) or preg_match('/по состоянию на (.*)? GMT/',$content,$match)){
  39.                             print("$n $match[1]\n");
  40.                             file_put_contents("cache_date.txt","$n $match[1]\n", FILE_APPEND);
  41.                     }
  42.                         elseif($content=='' OR strpos($content, '302 Moved') !== false) {
  43.                         array_shift ($prox);
  44.                         $content='';
  45.                         }
  46.             }
  47.     }

не понял куда лучше вставить if(count($prox)==0) $prox=get_proxy();
(Добавление)
сейчас еще нотисы пишет PHP Notice: Undefined variable: prox in /var/www/1.php on line 38
по этой строке $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $prox[0]);
(Добавление)
это if(count($prox)==0) $prox=get_proxy(); условие как я понимаю заново забирает список проксей из файла и формирует массив, т.е. если например исходный файл с проксями в реальном времени будет обновляться, то при окончании проксей он возьмет новую партию?
(Добавление)
вот такая ошибка еще вышла в процессе работы скрипта: PHP Warning: array_shift() expects parameter 1 to be array, null given in /var/www/1.php on line 44
это строка array_shift ($prox);
я так понимаю прокси закончились рабочие как раз? потому что я условие еще не ставил.


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Elio
Отправлено: 16 Августа, 2011 - 14:26:10
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2011  
Откуда: Hell


Помог: 0 раз(а)




смотри... мы убрали из скрипта прямое объявление $prox и запихнули его в функцию, тк планируем использовать его несколько раз.
Следовательно до foreach( $file as $n ) (35 стр.)
надо поставить $prox=get_proxy. для первого занесения массива в переменную.
проверку надо ставить с самого начала. while, те. сразу после объявления переменной $content
ошибки должны будут исчезнуть.

Цитата:
сейчас еще нотисы пишет PHP Notice: Undefined variable: prox in /var/www/1.php on line 38
по этой строке $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $prox[0]);

тк небыло изначально объявлен $prox.

Цитата:
если например исходный файл с проксями в реальном времени будет обновляться, то при окончании проксей он возьмет новую партию?

именно.

Цитата:
PHP Warning: array_shift() expects parameter 1 to be array, null given in /var/www/1.php on line 44
это строка array_shift ($prox);
я так понимаю прокси закончились рабочие как раз? потому что я условие еще не ставил.

скорее они не начинались тк. $prox был равен нулю. он не объявлялся.

(Отредактировано автором: 16 Августа, 2011 - 14:31:45)

 
 Top
xsh
Отправлено: 16 Августа, 2011 - 14:44:27
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




посмотри, теперь верно?
PHP:
скопировать код в буфер обмена
  1.     $urll = 'url.txt';
  2.     $file = file($urll, FILE_IGNORE_NEW_LINES);
  3.      
  4.     function get($url, $prox)
  5.     {
  6.         $ch = curl_init();
  7.         curl_setopt($ch, CURLOPT_URL, $url);
  8.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
  10.         curl_setopt($ch, CURLOPT_PROXY, "$prox");
  11.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
  12.         curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  13.         $ss=curl_exec($ch);
  14.         $info = curl_getinfo($ch);
  15.         $error = curl_error($ch).'('.curl_errno($ch).')'.' ['.$info['http_code'].']';
  16.         curl_close($ch);
  17.         if(file_exists('put.html'))unlink('put.html');
  18.         file_put_contents('put.html', $ss);
  19.         return $ss;
  20.     }
  21.      
  22.     function get_proxy(){
  23.             $proxylist = 'proxy2.txt';
  24.             $prox = array();
  25.         if(is_file($proxylist)){
  26.                     $handle = fopen($proxylist, "r");
  27.             while (($data = fgetcsv($handle, 40)) !== FALSE) $prox[] = $data[0];
  28.                     fclose($handle);
  29.                     return $prox;
  30.         }
  31.             else return false;
  32.     }
  33.      
  34.     $prox=get_proxy();
  35.  
  36.     foreach( $file as $n ){
  37.         $content="";
  38.         if(count($prox)==0) $prox=get_proxy();
  39.         while(strlen($content)<1){
  40.                     $content = get("http://webcache.googleusercontent.com/search?q=cache:$n", $prox[0]);
  41.                 if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$content,$match) or preg_match('/по состоянию на (.*)? GMT/',$content,$match)){
  42.                             print("$n $match[1]\n");
  43.                             file_put_contents("cache_date.txt","$n $match[1]\n", FILE_APPEND);
  44.                     }
  45.                         elseif($content=='' OR strpos($content, '302 Moved') !== false) {
  46.                         array_shift ($prox);
  47.                         $content='';
  48.                         }
  49.             }
  50.     }

(Добавление)
вот еще содержимое файла put.html, походу это уже прокси, при получении такого ответа работа скрипта прерывается:

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2.     <head>
  3.     <title>Information passed to this script</title>
  4.     </head>
  5.     <body>
  6.     <h1>Information passed to this script</h1>[
  7.     1313498016]<h2>Environment</h2>
  8. <PRE>
  9. SCRIPT_NAME=/env
  10. SERVER_NAME=www.linkweava.net
  11. SERVER_ADMIN=info@linkweava.net
  12. HTTP_CONNECTION=Keep-Alive
  13. REQUEST_METHOD=GET
  14. HTTP_ACCEPT=*/*
  15. SCRIPT_FILENAME=/home/linkw/cgi/env
  16. SERVER_SOFTWARE=Apache/2.2
  17. QUERY_STRING=q=cache:yamazaki-maso.net&f=proxy:http://webcache.googleusercontent.com/search?q=cache:yamazaki-maso.net
  18. REMOTE_PORT=40518
  19. HTTP_USER_AGENT=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208
  20. SERVER_SIGNATURE=
  21. SERVER_PORT=80
  22. REMOTE_ADDR=195.74.53.190
  23. SERVER_PROTOCOL=HTTP/1.1
  24. PATH=/usr/local/bin:/usr/bin:/bin
  25. REQUEST_URI=/env?q=cache:yamazaki-maso.net&f=proxy:http://webcache.googleusercontent.com/search?q=cache:yamazaki-maso.net
  26. GATEWAY_INTERFACE=CGI/1.1
  27. SERVER_ADDR=195.74.53.190
  28. DOCUMENT_ROOT=/home/linkw/html/
  29. HTTP_HOST=www.linkweava.net
  30. </PRE>
  31.  
  32. <H2>These Form-variables exists</H2>
  33. <PRE>
  34. q=cache:yamazaki-maso.net
  35. f=proxy:http://webcache.googleusercontent.com/search?q
  36. </PRE>
  37.  
  38. <hr><address>This page is automatically generated</address>
  39. </body></html>


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Elio
Отправлено: 16 Августа, 2011 - 15:59:08
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2011  
Откуда: Hell


Помог: 0 раз(а)




скорее всего... поэтому можно добавть
PHP:
скопировать код в буфер обмена
  1. elseif($content=='' OR strpos($content, '302 Moved') !== false OR strpos($content, 'info@linkweava.net') !== false)
если это фирма предоставляющая прокси. или другую фразу которая будет одинакова на таких "страницах ошибки".
 
 Top
xsh
Отправлено: 16 Августа, 2011 - 22:24:09
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Elio пишет:
скорее всего... поэтому можно добавть
PHP:
скопировать код в буфер обмена
  1. elseif($content=='' OR strpos($content, '302 Moved') !== false OR strpos($content, 'info@linkweava.net') !== false)
если это фирма предоставляющая прокси. или другую фразу которая будет одинакова на таких "страницах ошибки".

спасибо за совет, я добавил еще пару условий туда, теперь вроде все работает довольно стабильно.
есть вопрос: я правильно вставил строки $prox=get_proxy(); и if(count($prox)==0) $prox=get_proxy(); ?
очень благодарю за помощь.


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
OrmaJever
Отправлено: 17 Августа, 2011 - 01:07:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




xsh пишет:
а именно как я понял не осуществляется переключение на новый прокси если не приходит ответ или приходит ответ с ошибкой.

я не читал всю тему, но мне кажется ответ очевиден, он в строке

в течении этих 5 секунд курл будет ждать ответа и дальше не пойдёт, можно ставить 1 или 2, хорошие прокси за это время отвечают.
(Добавление)
а ну кстате ещё multicurl тоже нужен для таких ситуаций


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
xsh
Отправлено: 17 Августа, 2011 - 09:07:29
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




OrmaJever я подумаю над multicurl, спасибо


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB