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]   

> Описание: При разработке парсинга на Python натолкнулся на проблему - скрытые номера телефонов. При нажатии на кнопку отправляется POST запрос, как их эмулировать?
Stalke-Veles
Отправлено: 31 Мая, 2015 - 11:44:07
Post Id


Новичок


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


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




Помогите знатоки! Пожалуйста.
Проблема такая, разрабатываю парсер объявлений с Яндекс.Недвижимость, все данные достать могу, но не получается достать номер телефона, так как он скрыт и открывается по нажатию кнопки на сайте (ссылка для примера https://realty.yandex.ru/offer/2566517?ncrnd=96). То есть тут явно ajax запросы... в общем, подскажите как можно достать номер телефона!? Как сформировать такой же запрос? Будет вообще идеально если прям инструкции дадите =). Без благодарности не оставлю (отблагодарю на Qiwi кошелек Улыбка )

(Отредактировано автором: 03 Июня, 2015 - 10:30:21)

 
 Top
Ts.Saltan
Отправлено: 31 Мая, 2015 - 20:03:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


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




CURL'ом думаю получится такое сделать
Ajax'ом отправляется POST запрос на адрес https://realty[dot]yandex[dot]ru/gate/phone/get
Передаются параметры:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. params[hashes][]
  3. params[offerId]
  4. crc
  5.  


Алгоритм действий таков:
1. Настраиваем curl на сохранение получаемых кук
2. Получаем страницу https://realty[dot]yandex[dot]ru/offer/2566517
3. Теперь нужно спарсить значения, чтоб потом их передать
params[offerId] - можно взять из url - в данном случае значение 2566517
params[hashes][] - нечто закодированное base64, на странице располагается в атрибуте data-hash, нужна регулярка, чтоб из этого
CODE (html):
скопировать код в буфер обмена
  1. data-hash="NLeODKWyVD870iWfXhlYIg=="

доставала значение NLeODKWyVD870iWfXhlYIg==
crc - часть кода страницы, где это содержится
CODE (htmlphp):
скопировать код в буфер обмена
  1. crc":"ud9110409ffc0e84edb6932eaccdf2717","user-region

снова нужна регулярка, чтоб достать ud9110409ffc0e84edb6932eaccdf2717
4. Когда все параметры "выдраны", отправляем POST запрос на https://realty[dot]yandex[dot]ru/gate/phone/get
 
 Top
Stalke-Veles
Отправлено: 01 Июня, 2015 - 07:32:17
Post Id


Новичок


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


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




Ts.Saltan пишет:
CURL'ом думаю получится такое сделать
Ajax'ом отправляется POST запрос на адрес https://realty[dot]yandex[dot]ru/gate/phone/get
Передаются параметры:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. params[hashes][]
  3. params[offerId]
  4. crc
  5.  



Спасибо, сегодня буду делать. Еще один нюанс, я делаю это на Python и с POST запросами сталкиваюсь впервые. Если все получится, я сюда отпишусь за вашими данными для благодарности (500 рублей на QIWI) =).

P.S. для остальных читателей темы, если у вас есть вариант решения этой задачи на Python напишите, пожалуйста, вам тоже буду благодарен в QIWI-валютном эквиваленте =).

(Отредактировано автором: 01 Июня, 2015 - 08:27:26)

 
 Top
Stalke-Veles
Отправлено: 03 Июня, 2015 - 07:57:47
Post Id


Новичок


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


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




Не работает так ... формировал POST запрос с указанными данными, в результате возвращается ошибка "{"error":{"code":"INVALID_SIGNATURE","message":"Request signature is invalid or out of date"},"tasks":[{"name":"updateCRC","options":"ybfb4fcf7c2d1645ab133632f885f9490"}]}"

Уже не знаю что делать.

Там ведь несколько запросов после нажатия кнопки отправляется, сначала GET запрос, потом 3 POST запроса. И только у последнего указаны Form Data, у предыдущих вместо Form Data указаны Query String Parameters. Пробовал отправлять эти запросы в такой же очередности что при отправке из браузера, но не знаю какие параметры для них нужны.

У второго и третьего запроса, которые кстати почти одинаковы, в Response Headers имеются такие поля Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:https://realty[dot]yandex[dot]ru
Как понимаю это какие-то разрешения. У меня не получилось ни разу программно получить Response Headers с этими полями.

P.S. проблема еще актуальна.

(Отредактировано автором: 03 Июня, 2015 - 10:30:04)

 
 Top
Stalke-Veles
Отправлено: 03 Июня, 2015 - 14:22:44
Post Id


Новичок


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


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




Спасибо большое за подсказку =). Я не с CURL работаю, а с GRAB, но не в том суть =) у меня не получалось потому что при загрузке страницы GRABом и загрузке той же страницы браузером выдавались совершенно разные crc. А я об этом и не знал. GRAB вообще постоянно их разные выдает Ха-ха =))). Так вот я использовал сначала данные из браузера перехваченные отладчиком, потому и не получалось.

Но вся работа строилась на том алгоритме действий, который вы мне предоставили. Теперь буду готов отблагодарить на qiwi-кошелек когда мне заказ оплатят. Скидывайте номер qiwi кошелька здесь или давайте свяжемся в ВК Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« FreeLance »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB