Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/35: Рейтинг темы: голосов - 35, средняя оценка - 4.69
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707

CURL не получает страницу

15.11.2012, 18:30. Показов 8844. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу следующий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$url = "http://yandex.ru/yandsearch?text=запрос&lr=65&numdoc=50&p=0";
$data = "";
         if ($ch = curl_init())
        {
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
            curl_setopt($ch, CURLOPT_USERAGENT, 'PHP');
            $data = curl_exec($ch);
            if (empty($data)) {
                echo "EMPTY DATA<br />";
            } else {
                echo $data;
            }
            //print_r(curl_getinfo($ch));   
            //echo "\n\ncURL error number:" .curl_errno($ch);   
            //echo "\n\ncURL error:" . curl_error($ch); 
            curl_close($ch);
        } else {
            echo 'FAIL';
        }
выводит: "EMPTY DATA"
подскажите, почему не получает страницу?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2012, 18:30
Ответы с готовыми решениями:

CURL не получает страницу
Здравствуйте. Столкнулся с проблемой. Надо спарсить страницу с aliexpress. Вот сама ссылка: Вот как ее показывает браузер: ...

мой CURL получает ответ 503, В то время как их AJAX запрос выдает другие ответы
Дано: Вот сайт - http://imhonet.ru/ Сверху есть строка поиска, которая при изменении строки поиска, отправляет POST запросы по...

CURL как перейти на страницу
вот мой код &lt;?php include 'simple_html_dom.php'; $ch = curl_init('http://xn--c1adbibb0aykc7n.xn--p1ai/bronirovanie.html'); ...

30
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
22.11.2012, 14:22  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от basili4 Посмотреть сообщение
blackbanny, писали же выше что есть сервис для работы роботов. Там вполне приличные условия 1000 запросов в день.
я тоже писал выше:
Цитата Сообщение от blackbanny Посмотреть сообщение
да, там предлагают использовать XML сервис, но я парсю позиции сайта по запросам, а в их XML эти данные отстают от реальных данных...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
22.11.2012, 14:28
blackbanny, CURL ведь может получать и передавать COOKIE. Вы просто вместе с запросом передавайте COOKIE Яндексу и всё.
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
22.11.2012, 18:03  [ТС]
Цитата Сообщение от Lyodik Посмотреть сообщение
blackbanny, CURL ведь может получать и передавать COOKIE. Вы просто вместе с запросом передавайте COOKIE Яндексу и всё.
я сделал работу с куками после того, как пост создал:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'; 
        $ch = curl_init($url); 
        curl_setopt($ch, CURLOPT_URL, $url); 
        curl_setopt($ch, CURLOPT_HEADER, 1); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_REFERER, "http://www.yandex.ru");
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); 
        curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); 
        curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); 
        $codePage = curl_exec($ch); 
        curl_close($ch);
        return $codePage;
все равно яндекс палит меня, как робота
сейчас прикручиваю распознавание капчи через antigate
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
22.11.2012, 20:28
blackbanny, я просмотрел как там можно реализовать.. Значит схема такая:
1) Вы посылаете запрос на Яндекс.
2) Потом проверяете полученный HTML код, если там вывелась форма "Ой!", то вы парсите эту форму, вытягивая из неё содержимое скрытых инпутов.
3) Выдаёте на экран капчу и форму (форму свою надо написать).
4) Затем в форму вводится капча, вы с помощью неё генерируете такую ссылку:
http://yandex.ru/checkcaptcha/?rep=тут код, который ввели в форму&key=тут key, который вытащите из формы "Ой!"&retpath=тут retpath, который вытащите из формы "Ой!"
.
Делаете запрос по этой ссылке, сохраняете COOKIE в файл, а потом спокойно делаете запросы на Яндекс до тех пор, пока он снова не пронюхает, что к нему злой робот обращается
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
23.11.2012, 07:14  [ТС]
Цитата Сообщение от Lyodik Посмотреть сообщение
blackbanny, я просмотрел как там можно реализовать.. Значит схема такая:
1) Вы посылаете запрос на Яндекс.
2) Потом проверяете полученный HTML код, если там вывелась форма "Ой!", то вы парсите эту форму, вытягивая из неё содержимое скрытых инпутов.
3) Выдаёте на экран капчу и форму (форму свою надо написать).
4) Затем в форму вводится капча, вы с помощью неё генерируете такую ссылку:
.
Делаете запрос по этой ссылке, сохраняете COOKIE в файл, а потом спокойно делаете запросы на Яндекс до тех пор, пока он снова не пронюхает, что к нему злой робот обращается
вчера утром сделал это с разгадыванием капчи через antigate
индусы довольно быстро и правильно разгадывают
хотя сегодня пару раз выдали буквы, а не цифры, благо стоимость за разгадывание ничтожно мала
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.11.2012, 16:16
blackbanny, но, насколько я понимаю, скрипту придётся при КАЖДОМ запросе разгадывать капчу. А что я выше написал - там не нужно каждый раз.
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
24.11.2012, 11:38  [ТС]
Цитата Сообщение от Lyodik Посмотреть сообщение
blackbanny, но, насколько я понимаю, скрипту придётся при КАЖДОМ запросе разгадывать капчу. А что я выше написал - там не нужно каждый раз.
не придется, если один раз отгадываешь, то потом долго капчане появляется

Добавлено через 18 часов 27 минут
Lyodik, теперь проблема в том, скрипт, когда много данных выдает
Code
1
504 Gateway Time-out
в .htaccess ставил php_value max_execution_time 900, но не помогает
параметры ngix на хостинге менять не разрешают
подскажите, что еще можно сделать?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.11.2012, 12:01
blackbanny, попробуйте оптимизировать код, медленные функции замените на более быстрые и т.д. Можете код сюда выложить, форучане помогут оптимизировать.
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
24.11.2012, 12:23  [ТС]
Цитата Сообщение от Lyodik Посмотреть сообщение
blackbanny, попробуйте оптимизировать код, медленные функции замените на более быстрые и т.д. Можете код сюда выложить, форучане помогут оптимизировать.
да дело в том, что и оптимизировать нечего, просто у сайта, например, есть 20 запросов, по каждому я проверяю позицию, если капча, то посылаю запрос на антигейта, время ответа с антигейта около 10 секунд, вот и получается, что время выполнения скрипта зависит от ответа с антигейта и конечно от ответа яндекса, т.е. как быстро получаю страницу с выдачей...
я так понимаю, что время выполнения скрипта на хостинге стоит 30-60 секунд(могу ошибаться), вот и как сделать так, чтобы такая ошибка не вываливалась до тех пор пока, скрипт не завершит работу?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.11.2012, 13:31
Ну если
Цитата Сообщение от blackbanny Посмотреть сообщение
параметры nginx на хостинге менять не разрешают
Можно ещё попробовать не использовать antigate, а использовать метод, какой я описывал немного выше. Время выполнения скрипта сократится.
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
24.11.2012, 14:31  [ТС]
Цитата Сообщение от Lyodik Посмотреть сообщение
Ну если

Можно ещё попробовать не использовать antigate, а использовать метод, какой я описывал немного выше. Время выполнения скрипта сократится.
в вашем варианте придется вручную забивать код, а меня так не устраивает...
скрипт будет потом с помощью крона запускаться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2012, 14:31
Помогаю со студенческими работами здесь

CURL не хочет подгружать страницу
Перепробовал практически все наборы опций курла ... Есть ссылка ... Страница реально существет ...но CURL её не видит...

Как считать страницу через curl?
Здорова! Есть код для считывания страницы через прокси &lt;? error_reporting(E_ALL &amp; ~E_NOTICE); //создаём функцию function...

Сервер не может получить страницу (Curl, file_get_contents.)
Вообщем написал некий скрипт, работать работает и сейчас на локалке тоже, и работал на сервере, но в один прекрасный момент перестал...

Сервер не может получить страницу (Curl, file_get_contents)
привет. &lt;? $unvan_smert=&quot;http://google.com&quot;; $curl_smert = curl_init(); curl_setopt($curl_smert, CURLOPT_URL, $unvan_smert); ...

Авторизация с curl работает, как получить страницу в переменную?
есть скрипт some.php вначале в нем идет авторизация на каком-то сайте через curl, и проходит успешно. далее хочу воспользоваться поиском,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru