【发布时间】: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