ReCaptcha - Chrome 隐藏扩展程序

6
听说 ReCaptcha 可以读取某人计算机上所有的扩展程序(或 tampermonkey 脚本),有办法规避吗?无论是任何类型的脚本、代码片段还是设置。
这个理论得到了证实:只要使用 Chrome Automation Extension 在任何网站中登录,就会立即触发验证码。即使它只是为另一个与 Recaptcha 无关的任务公开 Chrome Options 的 API。仅加载带有 ReCaptcha 的任何网页(站点)就会触发验证码。
这是 background.js 文件,如何更改它以对其他应用程序不可察觉?
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/*
 * Checks for an extension error that occurred during the asynchronous call.
 * If an error occurs, will invoke the error callback and throw an exception.
 *
 * @param {function(!Error)} errCallback The callback to invoke for error
 *     reporting.
 */
function checkForExtensionError(errCallback) {
  if (typeof(chrome.extension.lastError) != 'undefined') {
    var error = new Error(chrome.extension.lastError.message);
    errCallback(error);
    throw error;
  }
}

/**
 * Captures a screenshot of the visible tab.
 *
 * @param {function(string)} callback The callback to invoke with the base64
 *     encoded PNG.
 * @param {function(!Error)} errCallback The callback to invoke for error
 *     reporting.
 */
function captureScreenshot(callback, errCallback) {
  chrome.tabs.captureVisibleTab({format:'png'}, function(dataUrl) {
    if (chrome.extension.lastError &&
        chrome.extension.lastError.message.indexOf('permission') != -1) {
      var error = new Error(chrome.extension.lastError.message);
      error.code = 103;  // kForbidden
      errCallback(error);
      return;
    }
    checkForExtensionError(errCallback);
    var base64 = ';base64,';
    callback(dataUrl.substr(dataUrl.indexOf(base64) + base64.length))
  });
}

/**
 * Launches an app with the specified id.
 *
 * @param {string} id The ID of the app to launch.
 * @param {function()} callback Invoked when the launch event is complete.
 * @param {function(!Error)} errCallback The callback to invoke for error
 *     reporting.
 */
function launchApp(id, callback, errCallback) {
  chrome.management.launchApp(id, function() {
    checkForExtensionError(errCallback);
    callback();
  });
}

清单:

{
  "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDr+Q7QFcTr4Wmn9sSICKWbxnYLhIM0ERbcapZCDmpAkiBUhOPt+KkYnTdUFl4Kx2xv02MwIowh36Fho9Dhqh7cPWGIPsLHUaJosO6t6oaHxQsMQS/K4MlnP5pNJykExo82DcajSXGV+mIQH3RslxL+XhtmIh2BQLwbizVG0bA+mwIDAQAB",
  "name": "Chrome Automation Extension",
  "version": "1",
  "manifest_version": 2,
  "description": "Exposes extension APIs for automating Chrome",
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": [
     "tabs", "management", "<all_urls>"
  ]
}

如果这正是我所想的,那就不算什么阴谋了。显然,我不理解其中的逻辑,否则我也不会问这些问题了。如果你能提供给我一个实际的代码或插件,无论是js还是其他解决方案,那将更加有用。 - innicoder
哪个代码?您可以检查扩展的代码,例如通过安装它并查看浏览器配置文件中的文件。还有CRXViewer扩展程序,它可以显示Web商店中其他扩展程序的源代码,无需安装它们。 - wOxxOm
我不明白发布的代码与问题有何关联 - 我需要看到整个扩展(最好是),以便做出合理的猜测,或者至少是 manifest.json 和内容脚本。那些没有向网页 DOM 添加内容并且没有通过 web_accessible_resources 公开其内容的扩展程序对于 Web 应用程序来说是不可见的。 - wOxxOm
我已经将清单添加到stackoverflow网站中了,这就是我的意思。 - innicoder
抱歉,我不明白你的意思。你所说的“我已将其添加到网站中”是什么意思?Chrome扩展API(如chrome.tabs或chrome.extension)无法被网站使用。 - wOxxOm
显示剩余3条评论
1个回答

1

您可以从此pdf中了解有关reCaptcha及其作弊方法的大量信息。我不是机器人:破解Google reCAPTCHA

Google reCaptcha使用以下详细信息检查恶意操作:

  • 浏览历史记录
  • 浏览器环境
  • 画布渲染
  • 屏幕分辨率和鼠标
  • User-Agent

如果有任何问题(例如:浏览器版本与用户代理不匹配或检测到可疑的鼠标移动),reCaptcha需要进行验证。

PS:实际上,我认为reCaptcha不会查找扩展程序(也不可能,因为浏览器不允许列出扩展程序),除非它检测到任何扩展程序已向网站注入可疑代码。

您还可以在此处检查reCaptcha的反混淆源代码。


我得到的答复是似乎recaptcha会检查插件生成的任何HTML代码是否被插入。基本上就是插件的痕迹。 例如,如果插件生成一个标签<tagbygoogleextension>Hey</tagbygoogleextension>,可能会在任何地方生成。因此,似乎它会对此进行检查(已确认),我只是在寻找一种绕过它的方法。 - innicoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接