【发布时间】:2014-09-19 08:53:15
【问题描述】:
我需要检索 instagram 的网站图标。现在我的程序可以解析 html 代码并检索图标的相应 url:http://d36xtkk24g8jdx.cloudfront.net/bluebar/d1f7ba7/images/ico/apple-touch-icon-precomposed.png。 但是我无法从我的程序中读取这个图标,因为当我的程序尝试下载它时,instagram 在该文件的开头、中间和结尾放置了一些额外的字节:
var wc = new WebClient();
var iconBytes = wc.DownloadData(@"http://d36xtkk24g8jdx.cloudfront.net/bluebar/d1f7ba7/images/ico/apple-touch-icon-precomposed.png");
var converter = new ImageConverter();
var image = (Image)converter.ConvertFrom(iconBytes); // Crash here 'parameter is invalid'
我尝试直接从网络浏览器保存 png 文件。然后我分析了它的内容,得出的结论是WebClient返回的字节数组几乎是相同的,但它包含了开头的15个额外字节,最后包含了8个额外的字节和数组中间的5个额外字节。根据对 png 格式的了解,我可以轻松地从头到尾清理这个“盐”,但我不知道如何从数组中间删除垃圾。
您能帮我弄清楚如何下载和处理 instagram favicon 吗?
【问题讨论】:
-
使用webbrowser控件,你能在加载的Document的Images集合中找到它吗,那里干净吗?
-
有两件事需要调查:WebClient 可能会暴露一些底层的 HTTP 内容(如分块)。查看这些额外的字节并搜索它们的含义。第二条线索:可能服务器根据用户代理发送不同的内容。配置您的 WebClient 使其看起来像您的浏览器。