我有一个刮刀脚本,可以从发布商网站上提取二进制内容。它的目的是取代手动操作,保存数百个单独的pdf文件,这是同事们明智地必须承担的。
这些网站是基于凭据的,我们拥有正确的凭据和权限来收集此内容。
我遇到过一个在iFrame中包含pdf文件的网站。
我可以从HTML中提取内容网址。当我将网址提供给内容抓取工具时,我会收集一小段HTML:<html><body>Forbidden: Direct file requests are not allowed.</body></html>
我可以直接将URL提供给浏览器,并且PDF文件可以正确解析。
我假设有一个会话cookie(或者其他东西,我对这个术语并不是100%感到满意)随着请求一起发送,表明GET
请求来自实时会话,而不是远程链接。
我查看了引用网址,看到这些不同的网址指向我在一天的测试中收集的同一篇文章(我已从网址中清除了标识符): -
http://content_provider.com/NDM3NTYyNi45MTcxODM%3D/elibrary//title/issue/article.pdf http://content_provider.com/NDM3NjYyMS4wNjU3MzY%3D/elibrary//title/issue/article.pdf http://content_provider.com/NDM3Njc3Mi4wOTY3MDM%3D/elibrary//title/issue/article.pdf http://content_provider.com/NDM3Njg3Ni4yOTc0NDg%3D/elibrary//title/issue/article.pdf
这表明URL中的某些内容是唯一的,并且需要与其他内容相关联以绕过直接链接检测器。
有关如何解决此问题的任何建议?
答案 0 :(得分:0)
行。答案是Cookie和标题。我通过httpfox收集了get
标题信息,并在我的脚本中创建了一个相同的标题对象,我从request.cookie中获取了会话ID,并在每次请求时发送了cookie。
为了更好地衡量,我还将用户代理设置为已知的工作浏览器代理,以防服务器检查代理详细信息。
工作正常。