阅读参考文章1,获取脚本,修改。可以改成任何自己爱用的语言。
本质是获取当前操作者的浏览器信息、鼠标键盘事件统计、生成 hexin-v 的时间,以及定期从服务器获取的 SERVER_TIME
,经过可逆加密来生成一段密文,携带在请求中,服务器收到请求后再比对验证。
所以按原文说的,抠一下 js代码。主要还是抠加密代码,解密代码咱也用不上。
需要注意两点:
- 最后生成主体中,其实是统计了
mouseMove
、mouseClick
、mouseWheel
(写脚本的家伙错拼成了mouseWhell
)、keyDown
、clickPosX
和clickPosY
的。前面 4 者是每有一次操作时都 +1,后 2 者是当 keyDown 发生时的点击坐标。虽然现在置为0
也没关系,但若要模拟的足够逼真,每次 Update 的时候:- 前 4 者可以 + 合适的随机数再参与生成;
- 后 2 者可以取合适的屏幕坐标随机数范围。
strHash
是拿当前 User-Agent 去 hash 了,要模仿的够逼真,可以拿爬虫模拟的 User-Agent 去 hash。谁知道后面会不会真的去验证这玩意呢?
graph LR
A[Init random value,<br/><code>strHash</code>or 0] --> B[Query chameleon.js<br/>to get<code>SERVER_TIME</code><br/>, and generate<code>hexin-v</code>];
B -- Succeed --> C[Request and<br/>add random<br/>to statistic<br/>fields];
C --> D{Content-type?};
D -- text/html --> B;
D -- application<br/>/json --> F[Process<br/>/Next request];
B -- Failed ----> E[Retry/End];