我在亚马逊有一个会员账户,一直在亚马逊网站上收集信息,目的是向他们发送买家信息。今天,我测试了我的网站,发现所有向亚马逊的请求都失败了。以下是证据:
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)
3条答案
按热度按时间0ejtzxu11#
经过进一步的测试,发现发生这种情况是因为Amazon需要专门设置
HttpWebRequest
的Accept参数,只需将其设置为:nzk0hqpo2#
尝试在进行调用之前设置HTTPWebRequet的UserAgent
zfycwa2u3#
两天前我就遇到了同样的问题。
我已经使用HttpWebRequest很多年了,没有任何问题,添加Useragent参数也没有什么区别。
目前我能想到的唯一解决方案是使用一个带有嵌入式Web浏览器的Windows窗体,并使用以下代码: