我怎样才能防止检测我运行一个脚本的网页?(How can I prevent a webpage f

2019-07-29 03:32发布

与facebook.com脚本尝试后,我注意到,几分钟的它并没有让我连接到facebook.com。 这件事发生超过一次,所以我怀疑,Facebook并不想惹使用userscripts他们的代码。

堆栈溢出问题, 一个网站可以知道,如果我运行userscript? 回答多种方式网站可以检测脚本。

现在我想知道我怎么可以欺骗一个网站,没有发现我可能正在运行的脚本。 有没有办法知道我的userscript HTML的变化在网站上触发?

Answer 1:

对于Firefox和Chrome也没有灵丹妙药,以防止被检测,它是一个过程,一种艺术...

该网站将检测脚本的3 原则方法是:

  1. 失序或过于频繁的AJAX请求。

  2. 更改页面的代码(HTML,JS全球,甚至CSS)。

  3. 不自然的鼠标或键盘操作。

请参见“一个网站可以知道,如果我运行userscript?” 欲获得更多信息。

对策:

  1. 对于AJAX请求你的脚本,使:

    1. 使用Wireshark的或类似的,分析正常Ajax调用的流量。 请确保您发送相同类型的电话,以相同的顺序。
    2. 请确保您的请求显示相同的标题和数据作为页面的。
    3. 不要发送AJAX请求快于网页做正常或快于用户可以合理地触发。
    4. 考虑加入随机延迟到脚本的要求,使他们不能均匀地定时。
    5. 当心页的要求不断变化的领域。 要确保你知道如何产生正确的价值; 不只是剪切和粘贴。

  2. 对于您对网页的代码修改:
    该页面完全可以在本地自行处理这些,用它自己的JavaScript,或者它也可以发送回的状态或代码片段到服务器。

    1. 拦截和替换页面的JavaScript。 像的NoScript,RequestPolicy,防火墙和代理工具可用于阻止的JS。
      然后使用Greasemonkey的添加您编辑的页面的JS版本。 Greasemonkey会运行,即使所有页面的JS是禁用的。

    2. 如果页面手机状态回家,并响应脚本的变化,拦截状态更改和替换的消息。 (如果你使用以前的方法这是没有必要的。)您将需要一个自定义的防火墙,代理服务器或路由器来做到这一点。

  3. 对于您触发事件(鼠标点击,填写字段等):

    1. 如果此页面检查,给它什么样子的。 例如,而不是click事件,你可能需要一个mouseovermousedownmouseupmouseout序列。
    2. 如果这还不够,那么应对措施是一样的页面的代码进行更改(更换JS,拦截状态信息)。

重要!
对抗试图阻挠userscripts网站的罕见事件,它就像一场战争。 网站管理员可以适应你在做什么,和环境可以不断地变化。 所以脚本这样的网站是一个持续的过程。



Answer 2:

你的身边 - 脚本在用户端执行。 因此,网站的服务器代码无法知道,如果你运行任何与否。

有两件事情但是要注意:

  1. 网站可以提供一些脚本在您的计算机,将检查其环境,并在必要时将报告上运行。 那些最经常有针对性地检测到网站的所有者不希望在其环境中的某些特定的脚本。
  2. 网站的制作者可以检查你的要求,如果它们不匹配,将匹配从网站提供的形式或AJAX常规通信模式分析。 丢失的钥匙或钥匙不匹配查询,识别自动化客户或丢失的浏览器头之类的东西硬编码头顺序。 如果你请求自动远远快于人类用户击中节流限值应这一类适合了。

否则,如果您生成完全一样的反应,不以全局访问的环境留下痕迹,这是不可能的网站告诉如果你使用userscript与任一服务器或客户端检查。



文章来源: How can I prevent a webpage from detecting I am running a script?