Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Curl и сайт ICQ
 
 автор: Richard Ferlow   (13.04.2011 в 15:10)   письмо автору
 
 

С какого-то времени определение онлайн или не онлайн контакт, то которое оффициальное, перестало работать.

Тогда решил определять "читая" страницу http://icq.com/people/399240068 - т.е. через профиль. оно дольше, но помещая в кэш можно "жить"

Ну вот что-то изменилось, не знаю что нужно передать серверу их, потому как при обращении скриптом, выдает ошибку.

Как побороть ?

Код

  $url="http://icq.com/people/399240068";

  $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_HEADER, false);

  curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_REFERER,'http://www.ya.ru');


  $result = curl_exec($ch);
  if(curl_errno($ch) != 0)
   die('curl_errno('.curl_errno($ch).'), curl_error('.curl_error($ch).')');
  curl_close($ch);

$next = preg_match('<div class="d1-1-2-1-1">(.*)</div>', $result, $city);

print_r($city);

echo $result;

  Ответить  
 
 автор: cheops   (13.04.2011 в 15:55)   письмо автору
 
   для: Richard Ferlow   (13.04.2011 в 15:10)
 

>Ну вот что-то изменилось, не знаю что нужно передать серверу их, потому как при обращении
>скриптом, выдает ошибку.
Что за ошибка?

  Ответить  
 
 автор: Richard Ferlow   (14.04.2011 в 07:38)   письмо автору
 
   для: cheops   (13.04.2011 в 15:55)
 

Ошибку выдает сервер ICQ


 400 Error - Bad Request
Error code:
400
Referrer:
Unknown
Requested  URL:
http://www.discont-travel.ru/icq/test.php
Date/Time:
Thu Apr 14 2011 10:37:48 GMT+0700.
Please submit these details to our webmaste


хотя та же страница, открытая через браузер, открывается нормально

  Ответить  
 
 автор: cheops   (14.04.2011 в 09:15)   письмо автору
 
   для: Richard Ferlow   (14.04.2011 в 07:38)
 

Хм... 400 ошибка - это ошибка синтаксиса запроса (хотя этот код могут подсунуть искусственно). Попробуйте для начала убрать реферер.

  Ответить  
 
 автор: Richard Ferlow   (14.04.2011 в 10:55)   письмо автору
 
   для: cheops   (14.04.2011 в 09:15)
 

Искуственно подсовывают. Это такая хитрая защита или что-то все таки не так...=(

Добавил еще

  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');


файл создал, но эффекта нет

  Ответить  
 
 автор: cheops   (14.04.2011 в 11:04)   письмо автору
 
   для: Richard Ferlow   (14.04.2011 в 10:55)
 

Cookie скорее всего меняются каждый раз, нужно запрашивать cookie и отсылать именно те, которые выдал сервер.

  Ответить  
 
 автор: mikha   (14.04.2011 в 17:54)   письмо автору
 
   для: Richard Ferlow   (13.04.2011 в 15:10)
 

Попробуй копнуть в сторону заголовков.
Сейчас попробовал свой простенький класс, с включенными и отключенными COOKIE, работает одинаково.
Одинаково нормально.
UP.
Чудо, нафига POST запрос то отправлять))
Всё работает
$ch = curl_init("http://icq.com/people/399240068"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
curl_close($ch); 
echo $result;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования