PHP.SU

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

Страниц (4): « 1 [2] 3 4 »

> Найдено сообщений: 55
xsh Отправлено: 17 Августа, 2011 - 09:07:29 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
OrmaJever я подумаю над multicurl, спасибо
xsh Отправлено: 16 Августа, 2011 - 22:24:09 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
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(); ?
очень благодарю за помощь.
xsh Отправлено: 16 Августа, 2011 - 14:59:10 • Тема: Несколько страниц сайта в одном файле • Форум: Напишите за меня, пожалуйста

Ответов: 6
Просмотров: 244
насколько я знаю это надо уже в конфиги апача лезть, чтобы по умолчанию подхватывался index.php
xsh Отправлено: 16 Августа, 2011 - 14:44:27 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
посмотри, теперь верно?
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>
xsh Отправлено: 16 Августа, 2011 - 14:27:28 • Тема: Подключение к другому компьютеру. • Форум: Вопросы новичков

Ответов: 2
Просмотров: 169
вот имхо откуда надо начать
http://www[dot]xakep[dot]ru/post/55318/d[dot][dot][dot]t[dot]asp?print=true
xsh Отправлено: 16 Августа, 2011 - 13:49:29 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
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);
я так понимаю прокси закончились рабочие как раз? потому что я условие еще не ставил.
xsh Отправлено: 16 Августа, 2011 - 11:13:13 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
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 не прописал
xsh Отправлено: 16 Августа, 2011 - 10:11:55 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

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

тут вроде скобки не хватает, но все равно ошибку выдает PHP Parse error: syntax error, unexpected T_STRING
xsh Отправлено: 15 Августа, 2011 - 16:53:51 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
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 скрипт завершает работу. постарался объяснить как можно подробнее.
xsh Отправлено: 15 Августа, 2011 - 16:17:14 • Тема: Перебор проксей из массива • Форум: Напишите за меня, пожалуйста

Ответов: 14
Просмотров: 227
Просьба помочь с проблемой подвисания скрипта, а именно как я понял не осуществляется переключение на новый прокси если не приходит ответ или приходит ответ с ошибкой.
На деле все выглядит так что скрипт выдает результаты, пока прокси не банится, после этого прокси не переключается на новый из массива проксей, и работа скрипта не продолжается. Если же остановить скрипт и почистить в листе проксей пару-тройку проксей, и перезапустить скрипт, то работа продолжается до следующего подвисания.
Цель скрипта чтобы он обработал все строки из файла 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. }
xsh Отправлено: 15 Августа, 2011 - 00:44:28 • Тема: Большое число перевести в ASCII символы • Форум: Вопросы новичков

Ответов: 6
Просмотров: 305
возможно поможет ord()
xsh Отправлено: 14 Августа, 2011 - 20:00:46 • Тема: Модификация регулярки • Форум: Регулярные выражения

Ответов: 7
Просмотров: 314
illy где то я ошибся '/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/mUsi' не работает, как сделать чтобы по этой /(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/ регулярке брался не только домен, а вся ссылка, если учесть что все ссылки по одной на строке.
если брать '/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/mUsi' то он берет часть url типа "/connect.html" и делает из него домен типа connect.ht не учитывая слеши и то что по 1 урл на строку..
xsh Отправлено: 14 Августа, 2011 - 18:35:53 • Тема: Модификация регулярки • Форум: Регулярные выражения

Ответов: 7
Просмотров: 314
illy поясни пожалуйста что означает mUsi, я где то встречал уже Usi но не помню что означает.
'/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/mUsi'
так верно?
xsh Отправлено: 14 Августа, 2011 - 17:40:25 • Тема: Модификация регулярки • Форум: Регулярные выражения

Ответов: 7
Просмотров: 314
illy в твоей регулярке урл ищутся по протоколу по сути, это немного не тот вариант, поскольку у меня исходные url без указания http. так что туда могут попасть и просто слова с латинскими буквами. хотелось бы все же применять ту регулярку
(Добавление)
illy если дописать к той регулярке mUsi она будет забирать всю строку?
xsh Отправлено: 14 Августа, 2011 - 17:24:05 • Тема: Легкая обрезка текста • Форум: Вопросы новичков

Ответов: 34
Просмотров: 1023

Страниц (4): « 1 [2] 3 4 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB