web抓取-ASP.NET HttpWebRequest-从今天开始,被亚马逊以503异常拒绝



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

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

Postulate:亚马逊已经将其网站自动拒绝询问
有什么方法可以欺骗吗并说服亚马逊发送页面
感谢并赞扬任何能带来光明的人!

注意:在研究这个问题时,我看到了一个向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";

在调用

之前,尝试为HTTPWebRequet设置UserAgent

从两天前开始,我遇到了完全相同的问题。

我多年来一直在使用HttpWebRequest,没有遇到任何问题,添加Useragent参数也没有什么不同。

我目前唯一能想到的解决方案是使用带有嵌入式网络浏览器的windows表单,其中包含以下代码:-

Sub GetHTML
 WebBrowser1.Navigate("http://www.amazon.co.uk")
Application.DoEvents()
End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    Dim oDoc1
    Dim StrHTML As String
    oDoc1 = WebBrowser1.Document
    StrHTML = oDoc1.body.outerhtml
End Sub

最新更新