【问题标题】:Amazon Blocks cURL Request?亚马逊阻止 cURL 请求?
【发布时间】:2013-06-06 20:12:38
【问题描述】:

我正在尝试使用 php cURL 来获取亚马逊网页但得到 HTTP/1.1 503 服务暂时不可用。亚马逊是否阻止 cURL?

http://www.amazon.com/gp/offer-listing/B003B7Q5YY/

<?php

function get_html_content($url) {
    // fake user agent
    $userAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt');
    curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt');

    $string = curl_exec($ch);
    curl_close($ch);

    return $string;
}

echo get_html_content("http://www.amazon.com/gp/offer-listing/B003B7Q5YY");

?>

【问题讨论】:

  • 你认为亚马逊如何识别 curl 而不是浏览器?
  • 这就是我想要找出的。也许亚马逊会寻找浏览器通常设置的东西,但我没有在 curl 中设置。我尝试了上面的代码,但它把我带到了另一个页面。
  • 可以肯定的是,在你的机器和亚马逊之间运行wireshark,捕获数据,通过curl推送相同的东西
  • 我使用了 Chrome 的网络检查器并将所有内容作为浏览器放在标题中,但仍然无法正常工作。在这一点上迷路了。
  • 查看之前的评论 - 使用 wireshark 来验证完全匹配

标签: php curl


【解决方案1】:

我用简单

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $offers_page);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
$html = curl_exec($ch);
curl_close($ch);

但我还有另一个问题。如果您向亚马逊发送大量查询 - 他们开始向您发送 500 页。

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多