Facebook 是否知道我正在使用 PhantomJS 抓取它,它可以更改其网站来对抗我吗?
Does Facebook know I'm scraping it with PhantomJS and can it change its website to counter me?
所以,也许我偏执了。
我正在为一个使用 PhantomJS 的爱好项目抓取我的 Facebook 时间线。基本上,我编写了一个程序,通过在 phantom 的 page.evaluate
块内使用 XPATH 查询文本 Sponsored
的页面来查找我的所有广告。文本显示为 html a
个元素的 innerHTML。
这几天一切正常,它发现了大量广告。
然后它停止返回任何结果。
当我手动登录 Facebook 再次检查元素时,我发现 Sponsored
这个词现在出现在页面上的 ::after
伪类元素中 css 属性 content: sponsored
。这意味着对文本的 XPATH 查询不再产生任何结果。不是开玩笑,Facebook 似乎在被抓取几天后改变了他们呈现这个词的方式。
偏执狂。我告诉你了。
因此,我向社区 Javascript、Web-Scraping 和 PhantomJS 开发人员提出了这个问题。到底他妈发生了什么。 Facebook 可以知道我的 PhantomJS 程序在 page.evaluate
块内做什么吗?
如果可以,怎么做?例如,我的幻象命令会出现在页面中嵌入的键盘记录程序中吗?
你有哪些理论?
即使用户代理被欺骗,也完全有可能检测到 PhantomJS。
它与其他浏览器有很多不同之处,其中包括:
- headers
顺序错误
- 缺少媒体插件和最新的 JS 功能
- PhantomJS-specific 方法,例如
window.callPhantom
- 堆栈跟踪中的 PhantomJS 名称
和许多其他人。
有关详细信息,请参阅这篇优秀的文章和链接中的演示文稿:https://blog.shapesecurity.com/2015/01/22/detecting-phantomjs-based-visitors/
也许 puppeteer 更适合您的需求,因为它基于真正的 cutting-edge Chromium 浏览器。
所以,也许我偏执了。
我正在为一个使用 PhantomJS 的爱好项目抓取我的 Facebook 时间线。基本上,我编写了一个程序,通过在 phantom 的 page.evaluate
块内使用 XPATH 查询文本 Sponsored
的页面来查找我的所有广告。文本显示为 html a
个元素的 innerHTML。
这几天一切正常,它发现了大量广告。
然后它停止返回任何结果。
当我手动登录 Facebook 再次检查元素时,我发现 Sponsored
这个词现在出现在页面上的 ::after
伪类元素中 css 属性 content: sponsored
。这意味着对文本的 XPATH 查询不再产生任何结果。不是开玩笑,Facebook 似乎在被抓取几天后改变了他们呈现这个词的方式。
偏执狂。我告诉你了。
因此,我向社区 Javascript、Web-Scraping 和 PhantomJS 开发人员提出了这个问题。到底他妈发生了什么。 Facebook 可以知道我的 PhantomJS 程序在 page.evaluate
块内做什么吗?
如果可以,怎么做?例如,我的幻象命令会出现在页面中嵌入的键盘记录程序中吗?
你有哪些理论?
即使用户代理被欺骗,也完全有可能检测到 PhantomJS。 它与其他浏览器有很多不同之处,其中包括:
- headers 顺序错误
- 缺少媒体插件和最新的 JS 功能
- PhantomJS-specific 方法,例如
window.callPhantom
- 堆栈跟踪中的 PhantomJS 名称
和许多其他人。
有关详细信息,请参阅这篇优秀的文章和链接中的演示文稿:https://blog.shapesecurity.com/2015/01/22/detecting-phantomjs-based-visitors/
也许 puppeteer 更适合您的需求,因为它基于真正的 cutting-edge Chromium 浏览器。