我想制作 hcaptcha 求解器 Chrome 扩展。我成功地使用了一些 api 来解决验证码、查找data-sitekey
和另一个参数。
但正是在Hcaptcha 的网站上,有一个我目前无法绕过的块。
它覆盖(使用混淆)XMLHttpRequest
,特别是send
允许仅向某些域发出请求的方法,而我显然需要将请求发送到自定义域,因此当我尝试这样做时,它会引发异常。
我的尝试
在扩展名中,我有两个文件 -content.js
和inject.js
.
content.js
只是在页面加载inject.js
之前注入:
function injectScript() {
var s = document.createElement('script');
s.setAttribute("charset", "UTF-8");
s.src = chrome.runtime.getURL('inject.js');
s.onload = function() {
//this.remove();
};
(document.head || document.documentElement).prepend(s);
}
injectScript();
其中inject.js
有一个interval
试图查找和解析验证码的数据需要解决它,并在解析后通过 Ajax 请求发送到求解器服务器。
我尝试了不同的方法,在开头添加inject.js
:
- 包含但确实是原始的变量
XMLHttpRequest
-var dihdkn278dm = XMLHttpRequest
然后不是创建对象XMLHttpRequest
而是创建dihdkn278dm
对象; - 包含但确实是原始
XMLHttpRequest
对象的变量 -var dihdkn278dm = new XMLHttpRequest()
然后使用它而不是创建请求对象; - 包含
XMLHttpRequest
send
函数的变量(是的,只是native code
)。
但是,在代码中调用send
时,它已经被覆盖了。
思路如何绕过呢?只检查混淆代码?
*fetch
也被覆盖