元刷新下载/ c#crawler

时间:2010-11-11 20:12:35

标签: c# refresh meta-tags webrequest web-crawler

我正在尝试创建一个抓取工具,以便从网站下载一些内容。

假设要消费的网址类似于

clickUrl ="http://www.example.com/idocs-nph/search/pdfViewerForm.html?args=5C7QrtC22wGYK2xFpSwMnXdtvSoClrL8xJKSjjboeVQpCCmqt4mgGEHlbmahCJFQEmRQwePEviF8EeCoaT0MAKztT3Sb63xk3VkL3PiCQ3RLoVYQqjKiogfu8Gq1RKKQmyoZK8o4WQM0kj-3nPY6gOqNXOY8VS4VhacAYKom_mBgul0xmRvgLA..";

在Web浏览器上,执行下载,返回包含刷新META

的html
<meta http-equiv="REFRESH" content="0;url=http://www.example.com/idocs-nph/search/pdfViewerForm.html?args=5C7QrtC22wGYK2xFpSwMnXdtvSoClrL8xJKSjjboeVQpCCmqt4mgGEHlbmahCJFQEmRQwePEviF8EeCoaT0MAKztT3Sb63xk3VkL3PiCQ3TmKpPQrAvPZQfu8Gq1RKKQmyoZK8o4WQMl05IxFu8XBzuJ49RIAPXJ8d-HneKenBQ-TKbP_e17qQ.."/>

并且浏览器要求保存文件的文件名

在我的抓取器代码上,

我打开了一个关于clickURL的WebRequest,

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(clickUrl);

我使用新的WebRequest检测并关注REFRESH网址,  但响应是一个新的html包含REFRESH META,而不是实际文件(非常递归)

HttpWebRequest不包含任何Cookie

1 个答案:

答案 0 :(得分:1)

该网站很可能正在检查Cookie。发生这种情况的原因是,当您向某人发送下载文件的链接时,收件人仍然可以在他或她下载文件之前被定向到该网站。

Sourceforge在这里做了一些有趣的事情可能有所帮助。如果从Sourceforge下载文件,则会出现在您描述的页面上。但是,如果您使用wget打开完全相同的页面,您将看到它确实加载了该文件。它会检测到你不是一个普通的浏览器并向你发送文件(无论如何,HTML都不会对wget有任何好处;它不会看广告)。

我建议您尝试以下方法。当您找到具有此类重定向的页面时,请重定向到该页面。如果您随后检测到您获得了相同的内容,请在没有User-Agent的情况下再次尝试。也许这实际上会给你文件。