【发布时间】:2014-05-23 10:26:24
【问题描述】:
我想通过在浏览器中运行代码来抓取网站。在这种情况下,刮板必须在特定机器上运行,而我无法在该机器上安装 任何 软件。但是,已经安装了浏览器(最新版本的 Firefox),我可以随意配置浏览器。
我想要的是一个用于抓取的 javascript 解决方案,包含在站点 A 的网页中,可以抓取站点 B。这似乎会遇到一些 CORS 类型的问题;我认为部分解决方案是禁用浏览器中的任何跨域检查。
到目前为止我已经尝试过什么:我查找了“javascript 中的网络抓取”,这带来了很多打算在 nodejs 中运行的东西,例如 this tutorial,还有像 pjscrape 这样需要 PhantomJS 的东西.但是,我找不到任何可以在浏览器中运行的等效项。
附:这很有趣:Firefox setting to enable cross domain ajax request 显然Chrome --disable-web-security 负责跨域/跨域问题。 Firefox 等价物?
附:看起来 Firefox 的 ForceCORS 扩展也很有用:http://www-jo.se/f.pfleger/forcecors 我不确定我是否能够安装它。
附:这是允许在不同浏览器中跨域的一组很好的方法:http://romkey.com/2011/04/23/getting-around-same-origin-policy-in-web-browsers/ 遗憾的是,建议的 Firefox 解决方案在 >=5 版本中不起作用。
【问题讨论】:
-
看起来你有一些有用的链接可以阅读。您的具体问题是什么?
-
@RayNicholus:这些是试图解决相同问题的人的链接,但没有一个描述在最近的 Firefox 版本中有效的解决方案,比方说比 2011 年更新。ForceCORS 显然失败了,并且 enablePriviledge () API 不再可用。
-
您针对的是哪些特定浏览器?除非您完全控制浏览器,否则您可以可靠地完成此操作的唯一方法是通过您控制的服务器代理您希望抓取的站点。
-
@RayNicholus:我的目标是 Firefox 11 或更高版本。我确实可以完全控制浏览器,但无法运行代理。
-
您最好的选择是将您的应用程序安装为扩展程序,这样同源策略的执行更受您的控制。
标签: javascript browser web-scraping cors