【问题标题】:How to disguise your PHP script as a browser?如何将您的 PHP 脚本伪装成浏览器?
【发布时间】:2020-10-09 02:47:04
【问题描述】:

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

我要获取的网址是:

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

如果我在浏览器中输入它可以工作,如果我尝试 file_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

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

【问题讨论】:

  • 在调用file_get_contents之前,您是否在URL上使用了urlencode
  • 妈的,太丢人了……我怎么能错过呢?
  • 好吧,它甚至可以使用 file_get_contents(),所以没有任何保护。很抱歉浪费大家的时间:)
  • @pandronic:我建议仍然掩盖它。他们可能正在查看日志并且可能不喜欢人们抓取数据,因此请采取预防措施以防止他们阻止自动化工具。 (只是我的 0.02 美元)
  • 只是补充一下,有时对于 https url 你需要关闭 verify_peer curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );

标签: php curl user-agent


【解决方案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');

    您当然可以用另一个用户代理替换。

    但是,“错误请求”很可能与丢失/错误的用户代理无关。听起来网络服务器本身不喜欢您的请求……而不是请求的 URI 背后的应用程序。

    【讨论】:

      【解决方案3】:

      我不得不从 $header 中丢失“Accept-Encoding: gzip,deflate”,才能让它在我的 godaddy 网站上正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 2014-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多