我们已经使用了一个网站的信息有一段时间了(如果您提到源,我们就会允许),并且我们已经手工复制了这些信息。正如您可以想象的那样,这可能很快就会变得乏味,所以我一直试图通过使用PHP脚本获取信息来自动化这个过程。
我要获取的URL是:
http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46 08-11-10 14-11-10如果我在浏览器中输入它,它就能工作,如果我尝试file_get_contents(),就会得到坏请求
我想他们检查了客户端是否是浏览器,所以我推出了一个基于卷曲的解决方案:
$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不幸的是,这也不起作用,我也没有主意了。我遗漏了什么?
发布于 2010-11-15 13:46:08
试着转义你的URL,它对我来说是这样的。
http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46%2008-11-10%2014-11-10发布于 2010-11-15 13:40:39
使用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后面的应用程序。
发布于 2020-10-08 18:47:04
我不得不输掉$header上的“接受-编码: gzip,泄气”,才能让它在我的godaddy网站上正常工作。
https://stackoverflow.com/questions/4184869
复制相似问题