V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
4ever911
V2EX  ›  Python

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

  •  
  •   4ever911 · 2017-07-01 23:59:50 +08:00 · 6847 次点击
    这是一个创建于 2709 天前的主题,其中的信息可能已经有所发展或是发生改变。
    登陆表单里面的密码框是一个控件, 支持 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 一些数据保持长连接? 如果不发送数据,这个连接能保持多久?
    第 1 条附言  ·  2017-07-02 13:45:32 +08:00
    放弃, 使用 cookie 来解决,每隔一段时间发心跳保持长连接。
    23 条回复    2017-07-03 22:04:50 +08:00
    xiaocsl
        1
    xiaocsl  
       2017-07-02 00:23:25 +08:00   ❤️ 1
    1.找到加密算法,自己写一遍.
    2.应该不叫保持长连接,应该要看服务端,会话过期时间是多久.如果服务器端设置的是 15 分钟,那 15 分钟内没任何请求会话就会过期.

    其实我非常好奇网站是什么,还在用控件,而且还支持 OSX ,记忆中只有网银啊.
    smilekung
        2
    smilekung  
       2017-07-02 00:24:01 +08:00 via Android   ❤️ 1
    先发请求过去请求这个 key 呗,或者直接采用 webdriver
    wintercoder
        3
    wintercoder  
       2017-07-02 00:27:09 +08:00   ❤️ 1
    支付宝登陆也是有自定义控件,试试 selenium 把
    4ever911
        4
    4ever911  
    OP
       2017-07-02 00:37:11 +08:00
    @xiaocsl

    1. 加密算法在控件里面,我看不到
    2. 好在我会每隔几秒去取点信息,麻烦的是我还要每次去开一台 Windows 电脑
    3. 券商的 web 登陆页面
    4ever911
        5
    4ever911  
    OP
       2017-07-02 00:37:53 +08:00
    @smilekung key 我可以请求到, 但是通过 key 如何去加密输入的 password 这部分是在 editor 控件完成的,我是看不到代码的。。。
    4ever911
        6
    4ever911  
    OP
       2017-07-02 00:38:45 +08:00
    @wintercoder 恩,那和我手动去拷贝 cookie 差别不是太大,而且,我的程序跑在 linux 下, 控件不支持 Linux,
    doubleflower
        7
    doubleflower  
       2017-07-02 00:41:49 +08:00 via Android
    直接像浏览器那样调用这个控件不就行了
    lestat
        8
    lestat  
       2017-07-02 08:47:30 +08:00 via iPhone
    应该是类似 rsa 的非对称加密吧,不太好搞的样子
    lestat
        9
    lestat  
       2017-07-02 08:51:15 +08:00 via iPhone   ❤️ 1
    服务器端有个证书,包含私钥和公钥,客户端每次会用公钥加密密码,服务器端用私钥解密,如果没有私钥即使有加密算法也不够
    googlebot
        10
    googlebot  
       2017-07-02 09:13:58 +08:00 via Android   ❤️ 1
    跪了吧,人家专门防爬虫,
    4ever911
        11
    4ever911  
    OP
       2017-07-02 09:16:10 +08:00
    恩, 刚才看了做完的测试代码,还在保持连接中没有被踢出, 所以就干脆拷贝 cookie 好了。
    imn1
        12
    imn1  
       2017-07-02 09:33:53 +08:00   ❤️ 1
    @4ever911
    如果我破了之后,一定转移所有资金换个券商,打死不再用这家
    jyf007
        13
    jyf007  
       2017-07-02 10:15:26 +08:00
    NPAPI???
    arischow
        14
    arischow  
       2017-07-02 11:05:56 +08:00 via iPhone
    先在 Chrome 装个 UA Switcher,看有没有 UA 能直接绕过这个控件
    1314258
        15
    1314258  
       2017-07-02 11:20:31 +08:00 via iPhone
    javascript 的 automation。
    或者导出插件 dll,不需要破解,反正你也是用它里面的函数,在 windows 完成验证之后,返回 cookie
    lianyue
        16
    lianyue  
       2017-07-02 12:20:04 +08:00
    非要桌面么 看看 移动端登录什么的
    coolypf
        17
    coolypf  
       2017-07-02 12:24:06 +08:00
    @lestat 怎么不够? lz 的爬虫也用公钥加密就行了。
    swulling
        18
    swulling  
       2017-07-02 13:55:05 +08:00 via iPhone
    尝试反编译这个控件试试…如果是公私钥,找到那个密钥应该就可以了
    smilekung
        19
    smilekung  
       2017-07-02 15:48:17 +08:00 via Android   ❤️ 1
    @4ever911 把 js 下载下来,直接本地执行…管它怎么加密的呢
    masha
        20
    masha  
       2017-07-02 16:49:50 +08:00   ❤️ 1
    可不可以这样,Windows 下写个脚本定期用 webdriver 模拟登陆获得 cookie,再同步给 Linux。
    powergx
        21
    powergx  
       2017-07-02 16:58:01 +08:00   ❤️ 1
    装个 node js ,改成接口.
    pc10201
        22
    pc10201  
       2017-07-03 13:20:24 +08:00
    我之前是用 autoit 搞定支付宝插件的~
    lestat
        23
    lestat  
       2017-07-03 22:04:50 +08:00 via iPhone
    @coolypf 对的,我当成抓包获取明文密码的需求了,是我搞错了。。晕了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1085 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:33 · PVG 07:33 · LAX 15:33 · JFK 18:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.