爬虫碰到安全输入控件如何破?

2017 年 7 月 1 日
 hihihihihi
登陆表单里面的密码框是一个控件, 支持 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 一些数据保持长连接? 如果不发送数据,这个连接能保持多久?
7555 次点击
所在节点    Python
23 条回复
xiaocsl
2017 年 7 月 2 日
1.找到加密算法,自己写一遍.
2.应该不叫保持长连接,应该要看服务端,会话过期时间是多久.如果服务器端设置的是 15 分钟,那 15 分钟内没任何请求会话就会过期.

其实我非常好奇网站是什么,还在用控件,而且还支持 OSX ,记忆中只有网银啊.
smilekung
2017 年 7 月 2 日
先发请求过去请求这个 key 呗,或者直接采用 webdriver
wintercoder
2017 年 7 月 2 日
支付宝登陆也是有自定义控件,试试 selenium 把
hihihihihi
2017 年 7 月 2 日
@xiaocsl

1. 加密算法在控件里面,我看不到
2. 好在我会每隔几秒去取点信息,麻烦的是我还要每次去开一台 Windows 电脑
3. 券商的 web 登陆页面
hihihihihi
2017 年 7 月 2 日
@smilekung key 我可以请求到, 但是通过 key 如何去加密输入的 password 这部分是在 editor 控件完成的,我是看不到代码的。。。
hihihihihi
2017 年 7 月 2 日
@wintercoder 恩,那和我手动去拷贝 cookie 差别不是太大,而且,我的程序跑在 linux 下, 控件不支持 Linux,
doubleflower
2017 年 7 月 2 日
直接像浏览器那样调用这个控件不就行了
lestat
2017 年 7 月 2 日
应该是类似 rsa 的非对称加密吧,不太好搞的样子
lestat
2017 年 7 月 2 日
服务器端有个证书,包含私钥和公钥,客户端每次会用公钥加密密码,服务器端用私钥解密,如果没有私钥即使有加密算法也不够
googlebot
2017 年 7 月 2 日
跪了吧,人家专门防爬虫,
hihihihihi
2017 年 7 月 2 日
恩, 刚才看了做完的测试代码,还在保持连接中没有被踢出, 所以就干脆拷贝 cookie 好了。
imn1
2017 年 7 月 2 日
@4ever911
如果我破了之后,一定转移所有资金换个券商,打死不再用这家
jyf007
2017 年 7 月 2 日
NPAPI???
arischow
2017 年 7 月 2 日
先在 Chrome 装个 UA Switcher,看有没有 UA 能直接绕过这个控件
1314258
2017 年 7 月 2 日
javascript 的 automation。
或者导出插件 dll,不需要破解,反正你也是用它里面的函数,在 windows 完成验证之后,返回 cookie
lianyue
2017 年 7 月 2 日
非要桌面么 看看 移动端登录什么的
coolypf
2017 年 7 月 2 日
@lestat 怎么不够? lz 的爬虫也用公钥加密就行了。
swulling
2017 年 7 月 2 日
尝试反编译这个控件试试…如果是公私钥,找到那个密钥应该就可以了
smilekung
2017 年 7 月 2 日
@4ever911 把 js 下载下来,直接本地执行…管它怎么加密的呢
masha
2017 年 7 月 2 日
可不可以这样,Windows 下写个脚本定期用 webdriver 模拟登陆获得 cookie,再同步给 Linux。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/372411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX