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 :: curl Биline

 PHP.SU

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


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

> Описание: Парсинг
die
Отправлено: 27 Декабря, 2012 - 20:18:07
Post Id



Новичок


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


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




Добрый день!
Подскажите в чём проблема несколько дней мучаюсь!
Написал скрипт который авторизуется на сайте Bилaйн, потом открывает страницу из которой мне нужно всё вытащить, но ничего не получается.
Обо всем по порядку!

1 Открыть страницу ... и авторизоваться
2 Нужно перейти на страницу на которой, будут нужные мне данные (страница пустая)
3 Нажать на кнопку, чтобы отправился post запрос и на этой же странице показал мне данные
4 Спарсить данные

3 пункт не получается осуществить Огорчение остальное под силу!
Вот кусок кода
PHP:
скопировать код в буфер обмена
  1. $chek = curl_init();
  2. curl_setopt($chek, CURLOPT_URL, 'https://uslugi*bееlinе*ru*VIPPaymentHistorySwitchingAction*do'); //замените * на .
  3. curl_setopt($chek, CURLOPT_FOLLOWLOCATION, 1);  
  4. curl_setopt($chek, CURLOPT_RETURNTRANSFER, 1);  
  5. curl_setopt($chek, CURLOPT_CONNECTTIMEOUT, 30);
  6. curl_setopt($chek, CURLOPT_SSL_VERIFYPEER, 0);
  7. curl_setopt($chek, CURLOPT_SSL_VERIFYHOST, 0);
  8. curl_setopt($chek, CURLOPT_POST, 1);  
  9. curl_setopt($chek, CURLOPT_NOBODY, 0);
  10. curl_setopt($chek, CURLOPT_HEADER, 1);
  11. curl_setopt($chek, CURLOPT_NOPROGRESS, 1);  
  12. curl_setopt($chek, CURLOPT_POSTFIELDS, 'тут пишу POST запрос который обычно отсылает браузер!');
  13. curl_setopt($chek, CURLOPT_COOKIEJAR,  "/cookies.txt");    
  14. curl_setopt($chek, CURLOPT_COOKIEFILE, "/cookies.txt");  
  15. $headers = array (тут пишу обычный заголовок какой пишет браузер! );
  16. curl_setopt($chek, CURLOPT_HTTPHEADER,$headers);  
  17.  
  18. $result = curl_exec($chek);  
  19. echo $result;
  20. curl_close($chek);



авторизируюсь прохожу на страницу нужную отправляю post и в ответ ничего не получаю
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Декабря, 2012 - 20:39:41
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Возможно там стоит защита в виде картинки 1х1 пиксель, которая синхронизирует сессию, например, или в css работает скрипт, а не статический файл. Может быть все что угодно.
А еще стоило бы пройти wget'ом и curl'ом из командной строки в дебаг-режиме, и посмотреть что там не так. И уже потом переносить это на обертку в php.
 
 Top
die
Отправлено: 27 Декабря, 2012 - 21:18:57
Post Id



Новичок


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


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




DeepVarvar можно поподробней с картинкой это как?
смысл проходить wget'ом и curl'ом из командной строки когда запрос не показывает или он там может показать а в браузере нет?
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Декабря, 2012 - 21:44:43
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




die пишет:
он там может показать а в браузере нет
Именно:
Спойлер (Отобразить)

(Добавление)
die пишет:
можно поподробней с картинкой это как
В браузер подгружается страница с html-разметкой. В разметке указано например <img src="/image.jpg" />. В .htaccess прописан реврайт на скрипт image.jpg => /image.php скрипт генерирует значение ключа сессии и jpg-картинку 1х1 пиксель. Сама картинка сути не несет, зато ключик сгенерирован. Теперь при отправке формы с пост-запросом, в обработчике ожидают не только нужные поля, но и ключик сессии, сгенерированый в image.php Закатив глазки
 
 Top
die
Отправлено: 28 Декабря, 2012 - 21:11:52
Post Id



Новичок


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


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




DeepVarvar а если отключить картинки в браузере и сайт будет нормально работать, то эта идея с картинкой отпадает ?
(Добавление)
когда смотрю куки в браузере их 6 штук когда curl сохраняет их в файле их всего 3 что делать как исправить как исправить?

Восможно ли посмотреть какой post запрос отправляет curl серверу ?
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Декабря, 2012 - 22:45:02
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




die пишет:
Восможно ли посмотреть какой post запрос отправляет curl серверу
Да, запустите его в консоли с теми же параметрами что и в скрипте, только с опцией -d (вроде маленькая d), это debug. Ну или почти везде есть опция -v (verbose), что практически тот же debug. Curl все покажет, как и мой пример с wget:
DeepVarvar пишет:
wget -d http://vk.com

(Добавление)
die пишет:
а если отключить картинки в браузере и сайт будет нормально работать, то эта идея с картинкой отпадает ?
Да, но есть еще стили, скрипты и прочие подключаемые файлы.
 
 Top
die
Отправлено: 29 Декабря, 2012 - 00:28:19
Post Id



Новичок


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


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




про отправляемый запрос curl имел ввиду в php
пробовал verbose он там его не показывает или не там смотрю (

с wget чтото у меня не срослось
картинки отключил всё норм работает щас ещё танцуюкопаю с бубнолопатой
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Декабря, 2012 - 00:43:53
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Вобщем мне показалось что вы не понимаете чутка.
Собсно curl это такая программа, бинарник, curl.exe или просто curl (без расширения для *NIX систем, где он первым и появился, а уж потом был портирован под винды).
А то, что вы пишете в php curl_* это пехапешная обертка для вызова этого бинарника.
Вам же нужно просто открыть консоль и вызвать бинарника передав ему те параметры, которые вы передаете обертке в php, которая передает их бинарнику.
 
 Top
die
Отправлено: 29 Декабря, 2012 - 04:20:40
Post Id



Новичок


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


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




DeepVarvar lда мольца не догнал)
Щас попробовал на curl (без php)
авторизовался перешёл на страницу отправляю пост, сохраняю страницу и ничего в ответ!

Показывает что сервис временно недоступен
такой ошибки можно добиться если запрос не так отправить через браузер
(Добавление)
DeepVarvar пишет:
только с опцией -d (вроде маленькая d), это debug

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB