如何将PHP脚本伪装成浏览器?

pan*_*nic 14 php user-agent curl

我们一直在使用来自网站的信息一段时间(如果您提及源代码我们这样做,该网站允许的内容)我们一直在手动复制信息.你可以想象这可能会很快变得乏味,所以我一直试图通过PHP脚本获取信息来自动化这个过程.

我正在尝试获取的URL是:

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46 08-11-10 14-11-10
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中输入它,它会起作用,如果我尝试使用file_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);
Run Code Online (Sandbox Code Playgroud)

我已经检查过,标题与我的浏览器标题完全相同,我仍然收到错误请求

所以我试了另一个解决方案

http://www.php.net/manual/en/function.curl-setopt.php#78046
Run Code Online (Sandbox Code Playgroud)

不幸的是,这也不起作用,我没有想法.我错过了什么?

Ree*_*ore 12

尝试转义您的网址,这样就适合我.

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46%2008-11-10%2014-11-10
Run Code Online (Sandbox Code Playgroud)


Thi*_*ter 11

使用 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背后的应用程序.