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 :: Помогите пройти recaptcha

 PHP.SU

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


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

> Описание: curl
sinsir
Отправлено: 24 Ноября, 2015 - 12:59:15
Post Id


Новичок


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


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




Есть парсер товаров с 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.  

(Отредактировано автором: 24 Ноября, 2015 - 13:00:45)

 
 Top
sinsir
Отправлено: 25 Ноября, 2015 - 16:19:06
Post Id


Новичок


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


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




хм Хм то ли задача непреодолимая, то ли не интересная ...
 
 Top
Viper
Отправлено: 26 Ноября, 2015 - 12:07:07
Post Id



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


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


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




Дело в том, что вам могут показывать капчу, а куками вы текст с картинки не введете.
Выхода 2.
1. Пользоваться проксями
2. Правильно отправлять запросы на сайт.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
sinsir
Отправлено: 26 Ноября, 2015 - 12:49:18
Post Id


Новичок


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


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




Viper пишет:
Дело в том, что вам могут показывать капчу, а куками вы текст с картинки не введете.
Выхода 2.
1. Пользоваться проксями
2. Правильно отправлять запросы на сайт.


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

По сути там нужно один раз клацнуть мышкой чтобы подтвердить страну или регион. Потом капча не показывается.
Вот на локальной версии она не показывается вообще.
Прикреплено изображение (Нажмите для увеличения)
234.jpg

(Отредактировано автором: 26 Ноября, 2015 - 12:54:12)

 
 Top
Viper
Отправлено: 26 Ноября, 2015 - 22:33:09
Post Id



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


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


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




sinsir пишет:
Вот на локальной версии она не показывается вообще.
это не означает что сайт работает как надо.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
sinsir
Отправлено: 27 Ноября, 2015 - 10:59:01
Post Id


Новичок


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


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




Viper пишет:
sinsir пишет:
Вот на локальной версии она не показывается вообще.
это не означает что сайт работает как надо.


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

Не знаю как это исправить Огорчение
 
 Top
Viper
Отправлено: 27 Ноября, 2015 - 11:18:47
Post Id



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


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


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




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

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


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
sinsir
Отправлено: 27 Ноября, 2015 - 11:44:55
Post Id


Новичок


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


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




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

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


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

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



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


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


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




sinsir пишет:
И все же, как ее обойти?

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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
sinsir
Отправлено: 27 Ноября, 2015 - 13:08:02
Post Id


Новичок


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


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




OrmaJever пишет:
sinsir пишет:
И все же, как ее обойти?

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


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


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2015  


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




В контексте данного вопроса было бы полезно ознакомиться с кодом парсера
 
 Top
sinsir
Отправлено: 27 Ноября, 2015 - 14:11:37
Post Id


Новичок


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


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




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.  


По-сути нужно просто получить одну страничку и добавить с нее данные в базу. Как я уже писал ранее, парсер работает в ручном режиме, то-есть запускается пару раз в неделю. То-есть создает нагрузку на сервер не более чем человек.

(Отредактировано автором: 27 Ноября, 2015 - 14:19:56)

 
 Top
botmaster2000
Отправлено: 27 Ноября, 2015 - 14:17:20
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2015  


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




Вот эта кука реальная(получена с сайта)
Цитата:
hl_sid=e247f89beb97ccba6e37d95ed0340e70

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

Насколько я понимаю, это сессия. Возможно она протухла
 
 Top
sinsir
Отправлено: 27 Ноября, 2015 - 14:22:39
Post Id


Новичок


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


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




Это я взял из файла my_cookies.txt, который создается из запроса CURLOPT_COOKIEJAR

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

А вообще я ее вписал "от фонаря" сюда. Думал может пройдет Закатив глазки

(Отредактировано автором: 27 Ноября, 2015 - 14:30:54)

 
 Top
sinsir
Отправлено: 29 Ноября, 2015 - 12:23:10
Post Id


Новичок


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


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




Через прокси почему-то не получается. Возвращается ошибка 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.  


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

(Отредактировано автором: 29 Ноября, 2015 - 12:40:13)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB