推荐学习书目
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
hihihihihi
V2EX  ›  Python

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

  •  
  •   hihihihihi · Jul 1, 2017 · 7360 views
    This topic created in 3266 days ago, the information mentioned may be changed or developed.
    登陆表单里面的密码框是一个控件, 支持 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 一些数据保持长连接? 如果不发送数据,这个连接能保持多久?
    Supplement 1  ·  Jul 2, 2017
    放弃, 使用 cookie 来解决,每隔一段时间发心跳保持长连接。
    23 replies    2017-07-03 22:04:50 +08:00
    xiaocsl
        1
    xiaocsl  
       Jul 2, 2017   ❤️ 1
    1.找到加密算法,自己写一遍.
    2.应该不叫保持长连接,应该要看服务端,会话过期时间是多久.如果服务器端设置的是 15 分钟,那 15 分钟内没任何请求会话就会过期.

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

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