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 :: парсер yandex с решением captcha

 PHP.SU

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


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

> Описание: решение
RinaFolk
Отправлено: 13 Ноября, 2014 - 11:41:33
Post Id



Новичок


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


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




.

(Отредактировано автором: 13 Ноября, 2014 - 12:41:31)

 
 Top
RinaFolk
Отправлено: 13 Ноября, 2014 - 12:07:44
Post Id



Новичок


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


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




Перенесено из темы "Про методы GET и POST"
Здравствуйте!
возникла проблема в парсинге яндекса.
парсер xml уже есть, теперь нужен парсер в лоб.
не получается отправить запрос на решение captcha, в ответ приходит, что страница не найдена.
буду рада помощи
листинг:
PHP:
скопировать код в буфер обмена
  1. $query_utf8 = urlencode(iconv('windows-1251','utf-8',$query));
  2.                 $region_utf8 = urlencode(iconv('windows-1251','utf-8',$region));
  3.                 $cookiefile = dirname(__FILE__)."/_cookie_position.txt";
  4.                 $user_agent="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
  5.                
  6.                 $sizeof_proxy_list = sizeof($this->proxy_list);
  7.  
  8.                 $search=array("text"=>urlencode($query_utf8),
  9.                                           "numdoc"=>$results_per_page,
  10.                                           "lr"=>$region_utf8);
  11. $setopt_url='http://yandex.ru/yandsearch?text='.$search['text'].'&p='.$j.'&numdoc='.$search['numdoc'].'&lr='.$search['lr'].'';
  12.                                        
  13.  
  14.                                         $output=$this->get_curl_info($setopt_url);
  15.  
  16.  
  17.                                         if(strpos($output,'<form action="/checkcaptcha" method="GET">')!=false)
  18.                                         {
  19.                                                 $addur=new addurl;
  20.                                                 $key=getTag('<input type="hidden" name="key" value="','">',$output);
  21.                                                 $retpath=getTag('<input type="hidden" name="retpath" value="','">',$output);
  22.                                                 $filename=$addur->saveCaptcha(getTag('<img src="','" class="b-captcha__image">',$output));
  23.                                                 $result_key=iconv('utf-8','windows-1251',$addur->antigateRecognize($filename));
  24.                                                 $post=array("key"=>$key,
  25.                                                                         "retpath"=>$retpath,
  26.                                                                         "rep"=>$result_key);
  27.                                                 //print_r($post); die();
  28.                                                 $output=$this->get_curl_info('http://yandex.ru/checkcaptcha?key='.$post['key'].'&retpath='.$post['retpath'].'&rep='.$post['rep'].'');
  29.                                                 print_r($output); die();
  30.                                         }
  31.  
  32. function get_curl_info($url,$post="")
  33.         {
  34.                 $path_up = "../";
  35.                 $user_agent="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
  36.                 $cookiefile = dirname(__FILE__)."/_cookie_position.txt";
  37.  
  38.                 $ch = curl_init();
  39.                 curl_setopt($ch, CURLOPT_URL, $url);
  40.                 curl_setopt($ch, CURLOPT_HTTPGET, 1);
  41.                 curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  42.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  43.                 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  44.                 curl_setopt($ch, CURLOPT_HEADER, 0);
  45.                 curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  46.                 //curl_setopt($ch, CURLOPT_HTTPHEADER, array($referer_new));
  47.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  48.                 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  49.                 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
  50.                 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
  51.                 curl_setopt($ch, CURLOPT_VERBOSE, true);
  52.                 $verbose = fopen($path_up.'modules/temp', 'w+');
  53.                 curl_setopt($ch, CURLOPT_STDERR, $verbose);
  54.                 curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  55.                 //curl_setopt($ch, CURLOPT_FRESH_CONNECT, FALSE);
  56.                 //curl_setopt($ch, CURLOPT_NOBODY,true);
  57.                 curl_setopt($ch, CURLOPT_REFERER, $url);
  58.                 if (is_array($post))
  59.                 {
  60.                         curl_setopt($ch, CURLOPT_POST,1); //Будем отправлять POST запрос
  61.                         $query=http_build_query($post);
  62.                         curl_setopt($ch, CURLOPT_POSTFIELDS,$query);
  63.                 }
  64.  
  65.                 $data = curl_exec($ch);
  66.                 return $data;
  67.         }
  68.  


P.S. не судите строго, программирую на php не так давно


Отредактировано модератором: Мелкий, 13 Ноября, 2014 - 13:15:41
подсветку добавил
 
 Top
RinaFolk
Отправлено: 13 Ноября, 2014 - 12:32:11
Post Id



Новичок


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


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




Перенесено из темы "Про методы GET и POST"
почему удаляют мои сбщ и темы?( где справедливость?
(Добавление)
P.S. прошу не судить строго, ибо программирую на php не так долго
 
 Top
Мелкий Супермодератор
Отправлено: 13 Ноября, 2014 - 12:57:23
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Потому что тема уже есть.


-----
PostgreSQL DBA
 
 Top
RinaFolk
Отправлено: 13 Ноября, 2014 - 13:10:51
Post Id



Новичок


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


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




Мелкий пишет:
Потому что тема уже есть.


те, которые я нашла, устарели
 
 Top
Мелкий Супермодератор
Отправлено: 13 Ноября, 2014 - 13:14:14
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Эта тема есть.


-----
PostgreSQL DBA
 
 Top
RinaFolk
Отправлено: 13 Ноября, 2014 - 13:18:30
Post Id



Новичок


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


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




Мелкий пишет:
Эта тема есть.


про свою тему я и так прекрасно знаю, но удалять сообщения с имеющихся, по похожей тематике, я считаю как то неправильно
 
 Top
Мелкий Супермодератор
Отправлено: 13 Ноября, 2014 - 13:28:44
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




А я считаю неправильным спамить одинаковыми сообщениями.
И с пунктом 1.16 действующих правил вы должны быть ознакомлены, поскольку зарегистрированы.


-----
PostgreSQL DBA
 
 Top
RinaFolk
Отправлено: 13 Ноября, 2014 - 13:34:15
Post Id



Новичок


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


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




Мелкий пишет:
А я считаю неправильным спамить одинаковыми сообщениями.
И с пунктом 1.16 действующих правил вы должны быть ознакомлены, поскольку зарегистрированы.


хорошо. тогда приношу свои извенения. я не сидела раньше на форумах.
(Добавление)
Мелкий пишет:
А я считаю неправильным спамить одинаковыми сообщениями.
И с пунктом 1.16 действующих правил вы должны быть ознакомлены, поскольку зарегистрированы.


а вы случайно не знаете, как решить мою проблему?...нигде ответов нет...и я сама не пойму...кто то направил на яндекс апи, но я не совсем понимаю, как пользоваться данным инструментом
 
 Top
and_07
Отправлено: 13 Ноября, 2014 - 16:17:22
Post Id


Гость


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


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




Не понятно для чего вам это нужно
у яндекса есть свой API для разработчика

если нужно эмулировать пользователя вы выбрали не очень хороший вариант
 
 Top
esterio
Отправлено: 13 Ноября, 2014 - 16:42:50
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




and_07 пишет:
если нужно эмулировать пользователя вы выбрали не очень хороший вариант

практически верно, но есть случаи когда нужно емулировать действия вместо использования АПИ. как пример фесбук. был проект где в форме пользователя стояло поле которое отсутсвувало в АПИ.

По сажу виведите все что возвращает curl в браузер и посмотрите есть ли там капча
 
 Top
and_07
Отправлено: 13 Ноября, 2014 - 16:59:51
Post Id


Гость


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


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




esterio пишет:
практически верно, но есть случаи когда нужно емулировать действия вместо использования АПИ. как пример фесбук. был проект где в форме пользователя стояло поле которое отсутсвувало в АПИ.


не понял
я и говорю для эмуляции действий пользователя данный вариант не оч хороший

(Отредактировано автором: 13 Ноября, 2014 - 17:02:37)

 
 Top
esterio
Отправлено: 13 Ноября, 2014 - 17:02:04
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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





and_07
тогда я вас не понял
 
 Top
RinaFolk
Отправлено: 14 Ноября, 2014 - 08:49:16
Post Id



Новичок


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


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




and_07 пишет:
Не понятно для чего вам это нужно
у яндекса есть свой API для разработчика

если нужно эмулировать пользователя вы выбрали не очень хороший вариант


под api вы подразумеваете получение xml?
простите, если не правильно поняла..
я просто пока не так много знаю..

реализация с обработкой xml у меня есть, там позиции отличаются от реальных, поэтому мне дали задание еще сделать инструмент для получения позиций в лоб, а с этим почему то проблема...мне приходит ответ на гет запрос страница, про которую яндекс говорит, что ее не существует...и я не пойму почему так
(Добавление)
esterio пишет:
and_07 пишет:
если нужно эмулировать пользователя вы выбрали не очень хороший вариант

практически верно, но есть случаи когда нужно емулировать действия вместо использования АПИ. как пример фесбук. был проект где в форме пользователя стояло поле которое отсутсвувало в АПИ.

По сажу виведите все что возвращает curl в браузер и посмотрите есть ли там капча


каптча приходит, все верно, и я достаю все данные для ее разрешения, но ответ есть несуществующая страничка
(Добавление)
делала эту имитацию в фидлере, все работает..перепроверила то, что отправляю я сама, все тоже самое..
 
 Top
and_07
Отправлено: 14 Ноября, 2014 - 10:46:36
Post Id


Гость


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. //как понимаю тут ломаем капчу antigateRecognize
  4. $result_key=iconv('utf-8','windows-1251',$addur->antigateRecognize($filename));
  5.  
  6.  
  7. //формируем массив для отправки
  8. $post=array("key"=>$key,"retpath"=>$retpath,"rep"=>$result_key);
  9.  
  10. //print_r($post); die();
  11.  
  12. //отправляем данные из $post методом GET
  13. $output=$this->get_curl_info('http://yandex.ru/checkcaptcha?key='.$post['key'].'&retpath='.$post['retpath'].'&rep='.$post['rep'].'');
  14.  
  15.  print_r($output); die();


а теперь вопрос
вы уверены что отправлять нужно GET?

если вбить полученный урл в браузере что выводит?
 
 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