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
Форумы портала PHP.SU :: Версия для печати :: Помогите пройти recaptcha
Форумы портала PHP.SU » » Работа с сетью » Помогите пройти recaptcha

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

1. sinsir - 24 Ноября, 2015 - 12:59:15 - перейти к сообщению
Есть парсер товаров с hotline.ua
Отлично работает с локалки, а вот с хостнга перестал работать на днях. Появился такой текст

"В связи с возросшей активностью нежелательных ботов на Hotline
с зарубежных IP-адресов, пожалуйста, подтвердите, что вы не являетесь таковым.
"

Как я понял нужно отдать через cURL какие-то куки.
Вопрос как определить какие?

Пробовал вот так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. curl_setopt ($curl, CURLOPT_URL, $link);
  3.                         curl_setopt($curl, CURLOPT_HEADER,1);
  4.                         curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true);
  5.                         curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, 30);
  6.                         curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, false);
  7.                         curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, false);
  8.                         curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7");
  9.                         //curl_setopt ($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  10.                         curl_setopt ($curl, CURLOPT_VERBOSE,1);
  11.                         curl_setopt ($curl, CURLOPT_COOKIEJAR, $cookie_name);  
  12.                         curl_setopt ($curl, CURLOPT_COOKIEFILE, $cookie_name);
  13.                         curl_setopt ($curl, CURLOPT_COOKIE, 'hl_sid=e247f89beb97ccba6e37d95ed0340e70;hotline.uauid=1059700411335970926');
  14.  


Вот что возвращается в куках на локалке
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. # Netscape HTTP Cookie File
  3. # http://curl.haxx.se/rfc/cookie_spec.html
  4. # This file was generated by libcurl! Edit at your own risk.
  5.  
  6. .hotline.ua     TRUE    /       FALSE   1448360985      hluniqueid_ctl  deleted
  7. .hotline.ua     TRUE    /       FALSE   1448360985      hluniqueid      deleted
  8. .hotline.ua     TRUE    /       FALSE   1450918799      hl_sid  e247f89beb97ccba6e37d95ed0340e70
  9. .hotline.ua     TRUE    /       FALSE   1448447385      region  1
  10. .hotline.ua     TRUE    /       FALSE   1448447385      region_mode     1
  11. .hotline.ua     TRUE    /       FALSE   1448447385      city_id 187
  12. .hotline.ua     TRUE    /       FALSE   1448447385      currency        uah
  13. .hotline.ua     TRUE    /       FALSE   0       PHPSESSID       9e5af9243e49a5ef63b1374f35473299
  14. .hotline.ua     TRUE    /       FALSE   1450952985      recent_visited_ a%3A1%3A%7Bi%3A0%3Bi%3A567929%3B%7D
  15.  
2. sinsir - 25 Ноября, 2015 - 16:19:06 - перейти к сообщению
хм Хм то ли задача непреодолимая, то ли не интересная ...
3. Viper - 26 Ноября, 2015 - 12:07:07 - перейти к сообщению
Дело в том, что вам могут показывать капчу, а куками вы текст с картинки не введете.
Выхода 2.
1. Пользоваться проксями
2. Правильно отправлять запросы на сайт.
4. sinsir - 26 Ноября, 2015 - 12:49:18 - перейти к сообщению
Viper пишет:
Дело в том, что вам могут показывать капчу, а куками вы текст с картинки не введете.
Выхода 2.
1. Пользоваться проксями
2. Правильно отправлять запросы на сайт.


Таки да. Показывается капча (точнее пытается показываться, но там какая-то ошибка вылазит и я не могу на нее клацнуть мышкой)

По сути там нужно один раз клацнуть мышкой чтобы подтвердить страну или регион. Потом капча не показывается.
Вот на локальной версии она не показывается вообще.
5. Viper - 26 Ноября, 2015 - 22:33:09 - перейти к сообщению
sinsir пишет:
Вот на локальной версии она не показывается вообще.
это не означает что сайт работает как надо.
6. sinsir - 27 Ноября, 2015 - 10:59:01 - перейти к сообщению
Viper пишет:
sinsir пишет:
Вот на локальной версии она не показывается вообще.
это не означает что сайт работает как надо.


Я имел ввиду, что капча приходит не всем. Видимо только на определенный диапазон айпиадресов или еще по какому-то признаку выдается. То-есть с локалки я могу нормально использовать этот парсер, а вот с хостинга немогу.

Не знаю как это исправить Огорчение
7. Viper - 27 Ноября, 2015 - 11:18:47 - перейти к сообщению
sinsir пишет:
Я имел ввиду, что капча приходит не всем. Видимо только на определенный диапазон айпиадресов или еще по какому-то признаку выдается. То-есть с локалки я могу нормально использовать этот парсер, а вот с хостинга немогу.

вы не поняли. С локалки у вас будет ваш внешний IP, а IP хостера у них может быть в черном списке. Думаю вывод очевиден.
8. sinsir - 27 Ноября, 2015 - 11:44:55 - перейти к сообщению
Viper пишет:
sinsir пишет:
Я имел ввиду, что капча приходит не всем. Видимо только на определенный диапазон айпиадресов или еще по какому-то признаку выдается. То-есть с локалки я могу нормально использовать этот парсер, а вот с хостинга немогу.

вы не поняли. С локалки у вас будет ваш внешний IP, а IP хостера у них может быть в черном списке. Думаю вывод очевиден.


Видимо очевиден, но не для всех Улыбка

И все же, как ее обойти?
Мне кажется тут возможны 2 варианта:
1. Заставить капчу нормально отобразиться, и потом просто клацнуть по ней мышкой.
2. Парсить через прокси, чтобы скрыть реальный адрес.
9. OrmaJever - 27 Ноября, 2015 - 12:00:02 - перейти к сообщению
sinsir пишет:
И все же, как ее обойти?

Всё зависит от причин её появления.
Если она появляется только на определёных адерсах - то юзать прокси
Если от от частых запросов - то делать слип между запросами
Всё зависит от обствоятельст
10. sinsir - 27 Ноября, 2015 - 13:08:02 - перейти к сообщению
OrmaJever пишет:
sinsir пишет:
И все же, как ее обойти?

Всё зависит от причин её появления.
Если она появляется только на определёных адерсах - то юзать прокси
Если от от частых запросов - то делать слип между запросами
Всё зависит от обствоятельст


Это не автоматический парсер, юзается в ручном режиме несколько раз в неделю. Не думаю что создает какую-то заметную нагрузку на сервер. Скорее бан на диапазон адресов. В общем-то так написано в сообщении от сервера, которое приходит вместе с капчей.
11. botmaster2000 - 27 Ноября, 2015 - 13:12:24 - перейти к сообщению
В контексте данного вопроса было бы полезно ознакомиться с кодом парсера
12. sinsir - 27 Ноября, 2015 - 14:11:37 - перейти к сообщению
botmaster2000 пишет:
В контексте данного вопроса было бы полезно ознакомиться с кодом парсера


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if( $curl = curl_init() )
  3.                  {     
  4.                         $cookie_path = '../../../../domains/localhost/r2d2/r2d2.ua/www/parser/'; // для локалки
  5.                         $cookie_path = 'r2d2.ua/'; // для сервака
  6.                         $cookie_name = $cookie_path."my_cookies.txt";
  7.                         curl_setopt ($curl, CURLOPT_URL, $link);
  8.                         curl_setopt($curl, CURLOPT_HEADER,1);
  9.                         curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true);
  10.                         curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, 30);
  11.                         curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, false);
  12.                         curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, false);
  13.                         curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7");
  14.                         //curl_setopt ($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  15.                         curl_setopt ($curl, CURLOPT_VERBOSE,1);
  16.                         curl_setopt ($curl, CURLOPT_COOKIEJAR, $cookie_name);  
  17.                         curl_setopt ($curl, CURLOPT_COOKIEFILE, $cookie_name);
  18.                         curl_setopt ($curl, CURLOPT_COOKIE, 'hl_sid=e247f89beb97ccba6e37d95ed0340e70;hotline.uauid=1059700411335970926');
  19.  
  20.                         $out = curl_exec($curl);
  21.                         $out = iconv('cp1251','utf-8', $out);
  22.                         curl_close($curl);
  23.                        
  24.                         echo $out;
  25. }
  26.  


По-сути нужно просто получить одну страничку и добавить с нее данные в базу. Как я уже писал ранее, парсер работает в ручном режиме, то-есть запускается пару раз в неделю. То-есть создает нагрузку на сервер не более чем человек.
13. botmaster2000 - 27 Ноября, 2015 - 14:17:20 - перейти к сообщению
Вот эта кука реальная(получена с сайта)
Цитата:
hl_sid=e247f89beb97ccba6e37d95ed0340e70

или просто набор символов?

Насколько я понимаю, это сессия. Возможно она протухла
14. sinsir - 27 Ноября, 2015 - 14:22:39 - перейти к сообщению
Это я взял из файла my_cookies.txt, который создается из запроса CURLOPT_COOKIEJAR

В первом посте я привел распечатку этого файла

А вообще я ее вписал "от фонаря" сюда. Думал может пройдет Закатив глазки
15. sinsir - 29 Ноября, 2015 - 12:23:10 - перейти к сообщению
Через прокси почему-то не получается. Возвращается ошибка 404 (страница не найдена)

Цитата:
//HTTP/1.1 404 Not Found Date: Sun, 29 Nov 2015 10:21:23 GMT Server: Apache/2.2.22 (Ubuntu) Vary: Accept-Encoding Content-Length: 329 Content-Type: text/html; charset=iso-8859-1
Not Found

The requested URL /mobile-mobilnye-telefony-i-smartfony/apple-iphone-5-16gb-white/' was not found on this server.


Делал так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $link = 'http://hotline.ua/mobile-mobilnye-telefony-i-smartfony/apple-iphone-5-16gb-white/';
  3. $proxy = '91.212.124.153:80';
  4.             curl_setopt($curl, CURLOPT_URL, $link);    
  5.             curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
  6.             curl_setopt($curl, CURLOPT_HEADER,1);
  7.             curl_setopt($curl, CURLOPT_PROXY, $proxy);
  8.             curl_setopt($curl, CURLOPT_TIMEOUT, 2);
  9.             curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //return the transfer as a string
  10.             curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  11.            $out = curl_exec($curl);
  12.            $out = iconv('cp1251','utf-8', $out);
  13.            curl_close($curl);
  14.            echo $out;
  15.  


Похоже на то, что возвращается страница прокси вместо той, что мне нужно Огорчение

 

Powered by ExBB FM 1.0 RC1