ASP.NET HttpWebRequest -从今天开始,被Amazon拒绝,503例外

cetgtptt  于 2023-03-04  发布在  .NET
关注(0)|答案(3)|浏览(235)

我在亚马逊有一个会员账户,一直在亚马逊网站上收集信息,目的是向他们发送买家信息。今天,我测试了我的网站,发现所有向亚马逊的请求都失败了。以下是证据:
1.我正在使用ASP.NET(VB)HttpWebRequest来收集数据。请提供URL,然后使用HttpWebResponse / GetResponseStream来检索页面。
1.我的大部分亚马逊数据都是从亚马逊API(AWSECommerceService)获得的--那项服务仍然有效。有些数据无法从API获得,这就是我诉诸刮取的原因。
1.从今天开始,对Amazon上任何页面(甚至是主页)的HttpWebRequest都会返回一个503(ServerUnavailable)异常,这些页面在任何浏览器中都可以看到。
1.我访问的其他网站都还能用(eBay、巴恩斯& Noble等),所以问题只出在亚马逊。
假设:亚马逊已经将其网站编程为拒绝自动查询。
有没有办法欺骗系统,说服亚马逊发送页面?
感谢和赞扬任何人谁可以提供一些光明!
注意:在研究这个问题的过程中,我看到了一个建议,建议在HttpWebRequest中添加一个UserAgent参数。我尝试使用IE8的UserAgent代码,但是没有什么不同。(UserAgent代码位于http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.useragent.aspx

0ejtzxu1

0ejtzxu11#

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

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

nzk0hqpo2#

尝试在进行调用之前设置HTTPWebRequet的UserAgent

zfycwa2u

zfycwa2u3#

两天前我就遇到了同样的问题。
我已经使用HttpWebRequest很多年了,没有任何问题,添加Useragent参数也没有什么区别。
目前我能想到的唯一解决方案是使用一个带有嵌入式Web浏览器的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

相关问题