Подтвердить что ты не робот

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

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

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

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

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

Я решил, что они проверили, является ли клиент браузером, поэтому я применил решение на основе 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);

Я проверил, и заголовки совпадают с заголовками моих браузеров, и я все равно получаю Плохой запрос

Итак, я попробовал другое решение:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Используйте 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.