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
Форумы портала PHP.SU :: Версия для печати :: Нужна помощь в работе граббинга для доступа на сайт irr.ru
Форумы портала PHP.SU » PHP » Программирование на PHP » Нужна помощь в работе граббинга для доступа на сайт irr.ru

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

1. Rudolf - 27 Декабря, 2009 - 18:03:01 - перейти к сообщению
Проблема такого плана:
Произвожу загрузку объявлений с сайта irr.ru, но в последнее время при попытке подключиться никакие данные не загружаются.
есть ли метод доступа к сайту?
при использовании функции file ($URL);
выдает ошибку.
пс: с другими сайтами проблем нет
пример кода:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. // Получить содержимое файла в виде массива. В данном примере мы используем
  3. // обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
  4. $lines = file('http://www.irr.ru/');
  5.  
  6. // Осуществим проход массива и выведем номера строк и их содержимое в виде HTML-кода.
  7. foreach ($lines as $line_num => $line) {
  8.     echo "Строка #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
  9. }
  10. ?>
2. JustUserR - 27 Декабря, 2009 - 21:31:09 - перейти к сообщению
Rudolf пишет:
при использовании функции file ($URL); выдает ошибку.
Ну уже говорили много раз что не стоит для работы с удаленными ресурсами использовать file_popen - лучше делайте запорс напрямую с помощью CURL/sockets и передачей нужных параметров типа referer и cookie
3. Rudolf - 27 Декабря, 2009 - 22:55:26 - перейти к сообщению
Все равно не могу понять, что происходит. Вот пример с использованием curl_init():


CODE (text):
скопировать код в буфер обмена
  1. <?
  2. function connect($link){    
  3.           $ch = curl_init();
  4.            curl_setopt($ch, CURLOPT_URL,$link);
  5.            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  6.            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  7.            curl_setopt($ch, CURLOPT_GET, 1);
  8.            curl_setopt($ch, CURLOPT_HEADER, 1);    
  9.            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  10.            $otvet = curl_exec($ch);
  11.            curl_close($ch);
  12. return $otvet;}
  13. $link = 'http://irr.ru/';
  14. $otvet=connect($link);
  15.  
  16. echo $otvet;
  17.  
  18. ?>
4. EuGen - 28 Декабря, 2009 - 11:08:04 - перейти к сообщению
И что в итоге?
5. JustUserR - 28 Декабря, 2009 - 14:43:33 - перейти к сообщению
Rudolf Воперых то что вы переделали в виде CURL это уже похвально - потому что так гораздо проще разобраться в причинах неудачного соединения (Ибо popen скрывает ошибки)
Вовторых у вас не хочет открываться даже главная страница? Может быть тот сервер с которго вы отсылаете запрос забанен по какйто из причин? И что вообще в ответе - timeout или HTTP-ошибка какая?
Также вероятно что основной контент доступен не напрямую а заргужается через AJAX тогда вам надо парсить AJAX-код и делать вручную загрузку
6. Rudolf - 28 Декабря, 2009 - 18:20:15 - перейти к сообщению
В итоге пустая страница у меня.

насчет забанен или нет, я этого не знаю, возможно...
а вот насчет AJAX - не правы. т.к. не целиком страница загружается ч/з AJAX.
а у кого-нибудь второй код работает?
7. CenapaTop - 28 Декабря, 2009 - 18:59:33 - перейти к сообщению
Cookie ему пошли.
8. Rudolf - 28 Декабря, 2009 - 21:30:32 - перейти к сообщению
Раньше с Cookie никогда не сталкивался. Основы про Cookie прочитал.
только возник вопрос, как их отправить и связать с запросом?
в общем добавил строчку:
curl_setopt($ch, CURLOPT_COOKIE, "sid=38446e3b3161b01f3716345ffec9f869");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

ЕЩЕ меня привлекает строчка:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Location: https://login[dot]pronto[dot]ru/login?ga[dot][dot][dot]ers/cas/auth.php
9. CenapaTop - 28 Декабря, 2009 - 21:39:31 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?
  2. function connect($link, $cookie){    
  3.           $ch = curl_init();
  4.            curl_setopt($ch, CURLOPT_URL,$link);
  5.            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  6.            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  7.            curl_setopt($ch, CURLOPT_GET, 1);
  8.            curl_setopt($ch, CURLOPT_HEADER, 1);
  9.            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  10.            $otvet = curl_exec($ch);
  11.            curl_close($ch);
  12. return $otvet;}
  13. $link = "http://irr.ru";
  14. $cookie="sid=f5c228fa420be5fae46abf58f323036c; passportID=K8tn4aaSbTdNrN3pSIQ9wr1nFpK5cob%2FH4ltc4UQhLCe2grtAb1AameDuDwU157STgb2ileauCWoT22hLxcDgtQ178yEoPabNsxadkYo7PJi%2FHaWI7ARDtyrhoSB%2FAon";
  15. $otvet=connect($link, $cookie);
  16.  
  17. echo $otvet;
  18.  
  19. ?>
10. Rudolf - 28 Декабря, 2009 - 22:02:12 - перейти к сообщению
ок, отлично теперь работает!
Благодарю за помощь! Хорошо
11. Ammy - 29 Декабря, 2009 - 07:43:12 - перейти к сообщению
Чтобы такие вопросы впредь не появлялись, анализируйте заголовки браузера, и стройте на этом свою программу.
12. Champion - 29 Декабря, 2009 - 08:55:13 - перейти к сообщению
Ammy, я прочитал несколько твоих ответов и попрошу тебя больше так не писать. Твои ответы авторам вопросов никак не помогут: они почти бессмыслены и вряд ли понятны спрашивающему. Вот в данной теме ты думаешь, автору что-то говорит слово сокеты?

В общем, не надо писать, чтобы написать
13. JustUserR - 29 Декабря, 2009 - 14:52:26 - перейти к сообщению
Rudolf пишет:
А вот насчет AJAX - не правы. т.к. не целиком страница загружается ч/з AJAX.
Я не открывал исходный сайт а просто предположиол что если у автора отстутсвую данные а на странице они есть то вероятно они загружаются динамически - через iframe или AJAX к примеру
Если не загружается вообще ничего то см выше - номер ошибки так и не выяснили (Впрочем все оказалось как я и думал вначале Улыбка

PS Для аналаза заголовков можно использовать Proxymion или ему подобные утилиты

PPS Именно таким образом кстати желательно всегда дейтсвовать при разработке API с сервером
14. Ammy - 30 Декабря, 2009 - 09:00:47 - перейти к сообщению
Champion, какой писатель грабберов не анализирует заголовки, включая информацию о полученных с сервера cookie? Не мне говорить вам о том, что некоторые сервера смотрят за клиентами, проверяют на наличие того или иного (гашиша или марихуаны). Если клиент пьян, и не имеет удостоверения, его посылают за пределы в лучшем случае.. ыы

Цитата:
Твои ответы авторам вопросов никак не помогут: они почти бессмыслены и вряд ли понятны спрашивающему.


Если спрашивающему надо, то он обращается за помощью. Если он обращается за помощью, значит рассмотрит любые варианты помощи. Если в моих словах что-либо не понятно спрашивающему, он спросит, о чём это я, или посмотрит маны.

Вот, например, JustUserR про анализ заголовков сказал, выделил рецептики. Он тоже пишет, чтобы написать?

Если моё присутствие на данном форуме кажется вам ненужным, дайте знать об этом Подмигивание
15. Champion - 30 Декабря, 2009 - 11:07:15 - перейти к сообщению
Ammy, ты ведь видишь уровень знаний спрашивающего. От одного упоминания слова сокеты он не полези в мануал и не сможет сформулировать вопрос тебе, чтобы уточнить, что ты имеешь в виду.
Ammy пишет:
анализируйте заголовки браузера, и стройте на этом свою программу.
Очень расплывчатая и бессмысленная фраза. Раз пишешь, то ссылки, примеры приводи
Ammy пишет:
Вот, например, JustUserR про анализ заголовков сказал, выделил рецептики.
.
Ammy пишет:
Он тоже пишет, чтобы написать?
Ну он любит поболтать Улыбка У него обычно по теме. Может быть, без примеров, но с избытком теории. И заметь, у него присутсвуют конкретные вопросы к автору и фигурируют названия функций в ответе.

Ладно проехали.

 

Powered by ExBB FM 1.0 RC1