Python爬虫中遇到安全输入控件如何破解?

登陆表单里面的密码框是一个控件, 支持 Windows/Mac OS,

但是该控件在加密登陆密码时有两个输入参数,一个是登陆时输入的密码,另外一个是每次都变化的从服务器取到的一个字符串( JS 取得), 所以这样生成的 POST 到服务器的加密密码每次都不一样,所以我想复用加密后的密码不可行。

控件大致伪代码如下:

timestamp = get_current_timestamp()

key = send_timestamp_to_server( timestamp)

edit.setkey(key)

newpassword = edit.get_encoded_text(realpassword)

postdata…



我尝试成功登陆,然后拷贝 cookie 到程序中是可行的, 但是感觉这方法太 weird,并且,我的主程序跑在 Linux 下,这样每次都要从 Windows 下去登陆拷贝 cookie,感觉很奇怪。

1. 有什么更好的办法吗?
2. 如果拷贝 cookie 的方法给 python requests 调用, 必须每隔一段时间去 post/get 一些数据保持长连接? 如果不发送数据,这个连接能保持多久?
Python爬虫中遇到安全输入控件如何破解?


24 回复

1.找到加密算法,自己写一遍.
2.应该不叫保持长连接,应该要看服务端,会话过期时间是多久.如果服务器端设置的是 15 分钟,那 15 分钟内没任何请求会话就会过期.

其实我非常好奇网站是什么,还在用控件,而且还支持 OSX ,记忆中只有网银啊.


我无法理解你的问题。

先发请求过去请求这个 key 呗,或者直接采用 webdriver

支付宝登陆也是有自定义控件,试试 selenium 把



1. 加密算法在控件里面,我看不到
2. 好在我会每隔几秒去取点信息,麻烦的是我还要每次去开一台 Windows 电脑
3. 券商的 web 登陆页面

key 我可以请求到, 但是通过 key 如何去加密输入的 password 这部分是在 editor 控件完成的,我是看不到代码的。。。

恩,那和我手动去拷贝 cookie 差别不是太大,而且,我的程序跑在 linux 下, 控件不支持 Linux,

直接像浏览器那样调用这个控件不就行了

应该是类似 rsa 的非对称加密吧,不太好搞的样子

服务器端有个证书,包含私钥和公钥,客户端每次会用公钥加密密码,服务器端用私钥解密,如果没有私钥即使有加密算法也不够

跪了吧,人家专门防爬虫,

恩, 刚才看了做完的测试代码,还在保持连接中没有被踢出, 所以就干脆拷贝 cookie 好了。


如果我破了之后,一定转移所有资金换个券商,打死不再用这家

先在 Chrome 装个 UA Switcher,看有没有 UA 能直接绕过这个控件

javascript 的 automation。
或者导出插件 dll,不需要破解,反正你也是用它里面的函数,在 windows 完成验证之后,返回 cookie

非要桌面么 看看 移动端登录什么的

怎么不够? lz 的爬虫也用公钥加密就行了。

尝试反编译这个控件试试…如果是公私钥,找到那个密钥应该就可以了

把 js 下载下来,直接本地执行…管它怎么加密的呢

可不可以这样,Windows 下写个脚本定期用 webdriver 模拟登陆获得 cookie,再同步给 Linux。

装个 node js ,改成接口.

我之前是用 autoit 搞定支付宝插件的~

对的,我当成抓包获取明文密码的需求了,是我搞错了。。晕了

回到顶部