【问题标题】:Does Facebook know I'm scraping it with PhantomJS and can it change its website to counter me?Facebook 是否知道我正在用 PhantomJS 抓取它,它是否可以更改其网站以对抗我?
【发布时间】:2017-12-08 05:27:54
【问题描述】:

所以,也许我是偏执狂。

我正在使用 PhantomJS 为一个爱好项目抓取我的 Facebook 时间线。基本上,我编写了一个程序,该程序通过使用幻象的page.evaluate 块内的XPATH 查询页面中的文本Sponsored 来查找我的所有广告。文本显示为 html a 元素的 innerHTML。

这几天一切都很好,它发现了大量的广告。

然后它停止返回任何结果。

当我手动登录 Facebook 以再次检查元素时,我发现 Sponsored 一词现在出现在页面上的 ::after 伪类元素中,其 css 属性为 content: sponsored。这意味着文本的 XPATH 查询不再产生任何结果。不是开玩笑,Facebook 似乎在被刮了几天后改变了他们呈现这个词的方式。

偏执狂。我告诉你了。

所以,我向 Javascript、Web-Scraping 和 PhantomJS 开发人员社区提出了这个问题。到底他妈发生了什么。 Facebook 可以知道我的 PhantomJS 程序在 page.evaluate 块内做什么吗?

如果是这样,怎么做?例如,我的幻像命令会出现在嵌入页面的按键记录程序中吗?

你的一些理论是什么?

【问题讨论】:

  • 所以您认为 HTML 更改是您废弃网站的结果?也许他们只是重新设计了它......收起你的锡箔帽。
  • 我知道我的锡纸帽不如你的 Viking 帽子那么酷 :) 但是你能回答一下,如果这至少可以检测到 PhantomJS 刮刀在你的网站上做什么?
  • 他们能检测到它是幻影吗.....是的....他们知道它在做什么吗?好吧,他们可以记录操作,就像任何人都可以跟踪网页上的任何内容一样,但是代码......不......但现在 facebook 知道......
  • 我认为您的问题中缺少的部分是:您在拨打电话时是否在欺骗浏览器用户代理?如果没有,我相信他们可以读取大多数网站在测试爬虫时寻找的 PhantomJS 字符串。我知道许多公司只是根据用户代理重定向呼叫。我曾为一个将其重定向到一个基本上说使用免费 api 下载内容而不是抓取的网站的网站工作。
  • 我是在欺骗,是的,它是(我认为)通用代理 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

标签: javascript facebook web-scraping phantomjs web-crawler


【解决方案1】:

即使用户代理被欺骗,也完全有可能检测到 PhantomJS。 它与其他浏览器有很多不同之处:

  • 标题顺序错误
  • 缺乏媒体插件和最新的 JS 功能
  • PhantomJS 特有的方法,例如window.callPhantom
  • 堆栈跟踪中的 PhantomJS 名称

还有很多其他的。

有关详细信息,请参阅此处链接的这篇出色的文章和演示文稿:https://blog.shapesecurity.com/2015/01/22/detecting-phantomjs-based-visitors/

也许puppeteer 更适合您的需求,因为它基于真正的尖端 Chromium 浏览器。

【讨论】:

  • 不是 OP 在问什么...... Tin Foli Hat 在问他们是否可以看到他正在运行的代码。
  • 请考虑一下@epascarello:他们知道这是一个机器人,他们可以跟踪它在做什么。所以是的,这是可能的,虽然不太可能。
  • 但它不会知道页面有代码阅读部分......它可以检测滚动,点击什么,加载什么。它不会知道它查看了页面的内容。
  • 我从来没有问过它是否可以看到我的代码。如果有了解 PhantomJS 的人代替您回答,也许他们可以回答 page.evaluate 块如何运行其命令以及网站的外观以及网站如何检测这些命令。
  • 感谢@Vaviloff,您链接到的那篇文章很棒,您的见解也很有帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2011-08-16
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多