Javascript Facebook知道我';我用PhantomJS刮它,它能改变它的网站来对付我吗?

Javascript Facebook知道我';我用PhantomJS刮它,它能改变它的网站来对付我吗?,javascript,facebook,web-scraping,phantomjs,web-crawler,Javascript,Facebook,Web Scraping,Phantomjs,Web Crawler,所以,也许我有点偏执 我正在用PhantomJS为一个爱好项目抓取我的Facebook时间表。基本上,我编写了一个程序,通过在phantom的页面内使用XPATH查询页面中的文本赞助商。evaluate块来查找我的所有广告。文本显示为htmla元素的innerHTML 几天来一切都很顺利,它发现了大量的广告 然后它停止返回任何结果 当我手动登录Facebook再次检查这些元素时,我发现页面上出现了一个单词subsorted:位于带有css属性content:subsorted的伪类元素之后。这意

所以,也许我有点偏执

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

几天来一切都很顺利,它发现了大量的广告

然后它停止返回任何结果

当我手动登录Facebook再次检查这些元素时,我发现页面上出现了一个单词
subsorted
:位于带有css属性
content:subsorted
的伪类元素之后。这意味着文本的XPATH查询不再产生任何结果。别开玩笑了,Facebook在被刮了几天后似乎改变了他们表达这个词的方式

偏执狂。我告诉过你

因此,我向Javascript、Web抓取和PhantomJS开发人员社区提出这个问题。到底发生了什么事。Facebook能知道我的PhantomJS程序在
页面中做了什么吗

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


你的一些理论是什么

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

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

有关详细信息,请参阅这篇优秀的文章和此处链接的演示文稿:


可能更适合您的需要,因为它基于真正的尖端Chromium浏览器。

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

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

有关详细信息,请参阅这篇优秀的文章和此处链接的演示文稿:



可能更适合您的需要,因为它基于真正的尖端Chromium浏览器。

所以您认为HTML更改是因为您取消了网站?也许他们只是重新设计了它……收起你的锡纸帽。我知道我的锡纸帽没有你的维京人帽那么酷:)但你能回答一下,这是否至少可以检测到PhantomJS刮板在你的网站上做什么?他们能检测到它是PhantomJS吗。。。。。对他们知道它在做什么吗?他们可以记录动作就像任何人跟踪网页上的任何东西一样,但是代码。。。不但现在facebook知道了……我想你的问题缺少的部分是:你打电话时是否在欺骗浏览器用户代理?如果没有,我相信他们可以阅读PhantomJS字符串,这是大多数网站在测试scraper时寻找的设置。我知道很多公司只是根据用户代理重定向电话。我曾为一家将其重定向到一个网站的公司工作,该网站基本上说,使用免费api下载内容,而不是抓取。我是在欺骗是的,它(我认为)是一个通用代理--
Mozilla/5.0(Macintosh;英特尔Mac OS X 10_13_1)AppleWebKit/537.36(KHTML,像Gecko)Chrome/62.0.3202.94 Safari/537.36
那么你认为HTML更改是因为你放弃了网站?也许他们只是重新设计了它……收起你的锡纸帽。我知道我的锡纸帽没有你的维京人帽那么酷:)但你能回答一下,这是否至少可以检测到PhantomJS刮板在你的网站上做什么?他们能检测到它是PhantomJS吗。。。。。对他们知道它在做什么吗?他们可以记录动作就像任何人跟踪网页上的任何东西一样,但是代码。。。不但现在facebook知道了……我想你的问题缺少的部分是:你打电话时是否在欺骗浏览器用户代理?如果没有,我相信他们可以阅读PhantomJS字符串,这是大多数网站在测试scraper时寻找的设置。我知道很多公司只是根据用户代理重定向电话。我曾为一家将其重定向到一个网站的公司工作,该网站基本上说,使用免费api下载内容,而不是抓取。我是在欺骗是的,它(我认为)是一个通用代理--
Mozilla/5.0(Macintosh;英特尔Mac OS X 10_13_1)AppleWebKit/537.36(KHTML,像Gecko)Chrome/62.0.3202.94 Safari/537.36
并不是OP真正想要的。。。。Tin Foli Hat询问他们是否能看到他正在运行的代码。请仔细想想@epascarello:如果他们知道这是一个机器人,他们可以跟踪它在做什么。所以是的,这是可能的,虽然不太可能。但它不会知道页面中有代码读取部分。。。。它可以检测滚动、点击、加载的内容。如果它查看了页面的内容,它将不会有任何线索。我从未问过它是否可以看到我的代码。如果一个理解幻影的人代替你回答,也许他们可以回答
页面。evaluate
块如何运行其命令,以及网站的外观如何,以及网站如何检测这些命令。谢谢@Vaviloff,你链接的那篇文章很棒,你的见解非常有帮助。这不是OP真正想问的。。。。Tin Foli Hat询问他们是否能看到他正在运行的代码。请仔细想想@epascarello:如果他们知道这是一个机器人,他们可以跟踪它在做什么。所以是的,这是可能的,虽然不太可能。但它不会知道有代码读取