WebClient和HttpWebRequest都突然无法提取基本的亚马逊页面

本文关键字:亚马逊 提取 HttpWebRequest 突然 WebClient | 更新日期: 2023-09-27 18:00:42

我们有一个内部应用程序,偶尔会从亚马逊的一些页面中提取一些数据(我们知道他们有用于某些操作的API……我们所做的需要一些API中不包含的自定义信息)。我们从来没有遇到过拉取他们页面的问题,但突然间,亚马逊几乎每一个请求都会返回"(503)服务器不可用",这种情况已经发生了好几天,所以我们怀疑这是暂时的。甚至像这样简单的东西:

System.Net.WebClient client = new System.Net.WebClient();
string data = client.DownloadString(new Uri("http://www.amazon.com/Bose-Companion-multimedia-speaker-Graphite/dp/B000HZBR64/"));

奇怪的是,这些页面在网络浏览器中加载得很好,但每当我们试图通过代码提取它们时,都会失败。

是什么原因导致这些功能失败?有没有可能他们在自己的一端更改了一些东西,我们需要对我们的调用进行一些自定义逻辑?

WebClient和HttpWebRequest都突然无法提取基本的亚马逊页面

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

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

一切都很好。这是最近的一个变化,所以他们一定改变了一些东西。

检查您请求的用户代理。使用户代理与浏览器相同。并检查您是否为应用程序设置了代理?也许您的浏览器和应用程序正在使用不同的代理