ASP.NET HttpWebRequest - 从今天开始,被 Amazon 拒绝,出现 503 异常

标签 asp.net web-scraping httpwebrequest

我在亚马逊有一个附属帐户,并且一直在从亚马逊网站收集信息,以便向他们发送买家。今天,我测试了我的网站,发现所有对亚马逊的请求都失败了。证据如下:

  1. 我正在使用 ASP.NET (VB) HttpWebRequest 来收集数据。为其提供一个 URL,然后使用 HttpWebResponse/GetResponseStream 检索页面。
  2. 我的大部分亚马逊数据都是从 Amazon API (AWSECommerceService) 获取的 - 该服务仍然有效。有些数据无法从 API 中获得,这就是我采用抓取的原因。
  3. 截至今天,对 Amazon 上任何页面(甚至是主页)的任何 HttpWebRequest 都会返回 503(服务器不可用)异常。这些页面在任何浏览器中都可见。
  4. 我访问的所有其他网站仍然可以使用(eBay、Barnes & Noble 等),因此问题仅出在 Amazon 上。

Postulate: Amazon has programmed its Web site to reject automated inquiries.
Is there any way to spoof the system and convince Amazon to send the page?
Thanks and kudos to anyone who can shed some light!

注意:在研究该问题时,我看到了向 HttpWebRequest 添加 UserAgent 参数的建议。我尝试使用 IE8 的 UserAgent 代码,但没有什么区别。 (UserAgent 代码位于 http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.useragent.aspx )

最佳答案

经过一些进一步的测试,事实证明发生这种情况是因为 Amazon 需要专门设置 HttpWebRequest 的 Accept 参数。 只需将其设置为:

request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

关于ASP.NET HttpWebRequest - 从今天开始,被 Amazon 拒绝,出现 503 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6515430/

相关文章:

c# - 如何从共享类中访问 ViewState?

javascript - 在回发之间保存数据

vba - 找不到任何方法来单击下拉菜单来选择任何更喜欢的项目

windows-phone-7 - Windows Phone 7上的HttpWebRequest返回 “The remote server returned an error: NotFound”

c# - 重用 keep-alive HTTP web 请求对象

javascript - 使用 ASP.Net MVC 的回调在弹出窗口中加载选定的 GridView 项目

c# - 美化 C# 语法

javascript - 使用 PhantomJS 抓取图像 src URL

python请求和beautifulsoup bot检测

c# - 阅读网站的编码问题,三种不同的编码