Intereting Posts
PHP – включить php-файл, а также отправить параметры запроса Извлечь подстроку между двумя символами в строке PHP PHP: stmt-> execute () завершается с ошибкой, но ошибка пуста Как пройти через $ _POST, передавая каждое поле сообщения в качестве параметра функции? Редактировать Как обрабатывать связь между доменом и базами данных? Загружается ли файл Laravel Secure, если рассматривается только изображение как реализовать систему выбора динамической комбинированной коробки Найти число вхождений определенной строки в группе символов WITH A CATCH удалять информацию из таблицы mysql, когда пользователь закрывает свой браузер Значения ajax post пусты Создание CSV с массивом Недопустимый номер параметра, состояние SQL S1093 php odbc mssql Связывание предохранителей для php `password_verify` вызов возвращает false для правильного пароля .htaccess не позволяет пользователю просматривать файлы моей папки, у которых нет index.php

Как замаскировать свой PHP-скрипт в качестве браузера?

Мы используем информацию с сайта некоторое время (что-то, что позволяет сайт, если вы упомянули об источнике, и мы это делаем), и мы копировали информацию вручную. Как вы могли себе представить, это может стать утомительным довольно быстро, поэтому я пытаюсь автоматизировать процесс, извлекая информацию с помощью PHP-скрипта.

URL-адрес, который я пытаюсь получить, следующий:

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46 08-11-10 14-11-10 

Если я ввожу его в браузер, он работает, если я попробую файл_get_contents (), я получаю Bad Request

Я решил, что они проверили, является ли клиент браузером, поэтому я применил решение на основе CURL:

 $ch = curl_init(); $header=array( 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: en-us,en;q=0.5', 'Accept-Encoding: gzip,deflate', 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Keep-Alive: 115', 'Connection: keep-alive', ); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt'); curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt'); curl_setopt($ch,CURLOPT_HTTPHEADER,$header); $result=curl_exec($ch); curl_close($ch); 

Я проверил, и заголовки идентичны заголовкам моего браузера, и я все равно получаю Bad Request

Поэтому я попробовал другое решение:

 http://www.php.net/manual/en/function.curl-setopt.php#78046 

К сожалению, это тоже не работает, и у меня нет идей. Что мне не хватает?

Попробуйте ускользнуть от своего URL-адреса, это работает для меня именно так.

 http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46%2008-11-10%2014-11-10 

Используйте curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');

Вы, конечно же, можете заменить useragent другим.

Однако «плохой запрос», скорее всего, НЕ связан с отсутствующим / плохим пользовательским агентом. Похоже, что веб-сервер не любит ваш запрос, а не приложение за запрошенным URI.