有时候我会碰到一张我无法刮擦的图像,以便可以保存。一个例子是:
https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487
当我从Internet Explorer点击网址时,我看到图像,但是当我尝试从下面的代码中获取它时,我收到以下错误消息“System.Net.WebException远程服务器返回错误:(403)Forbidden” GetResponse错误:
string url = "https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487";
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
有关如何获取此图片的任何想法?
编辑:
我能够保存具有扩展名的图像。例如,我可以很好地抓取下面的图像:
https://s3.amazonaws.com/plumdistrict.com-production/perks/12659/image/original.jpg?1326828951
答案 0 :(得分:1)
尽管HTTP本来应该是无状态的,但是有很多实现依赖于无状态。如果您提供证明您已登录的cookie,我可以将我的网络服务器配置为仅接受“http://mydomain.com/sexy_avatar.jpg”的请求。如果没有,我发送重定向303到“http:// mydomain的.com / avatar_for_public_use.jpg”。
亚马逊也可以这样做。尝试使用Chrome加载网页,然后在开发者模式下查看网络视图(CTRL + SHIFT + J)以查看提供给网站的所有标题。也许您甚至需要在允许查看图像之前在同一会话中进行完整导航。在我开发的许多Web应用程序中都是如此: - )
答案 1 :(得分:0)
好吧,看起来它是从脚本生成的(可能是从数据库中检索的)。服务器应该发送文件/内容类型以便与...一起...但它似乎不是,我认为这违反了标准。
我的Linux机箱非常清楚,一旦它在我的硬盘上,它就是一个JPEG图像,因为它检查文件头而不是依赖于扩展。也许在Windows中有一个工具可以做同样的事情吗?
编辑:实际上,在进一步考虑之后,你会得到 403 似乎很奇怪。也许服务器实际上阻止您以这种方式检索文件。