美文网首页Python爬虫@IT·互联网爬虫专题
Python爬虫日记四:Charles抓包获取黑大帐号密码验证码

Python爬虫日记四:Charles抓包获取黑大帐号密码验证码

作者: 梅花鹿数据rieuse | 来源:发表于2017-05-02 19:49 被阅读1345次

    一:前言

    今天看了一篇安利Charles这个软件的文章,就拿来试试,我们大学的登录页面用开发者模式进去chrome有屏蔽相关模块,用火狐可以正常不过还是抓不到验证码这个js动态数据而且帐号密码的请求后Cookies并找不到。那么这个时候使用抓包软件就是一个好的方法之一了,之前也用过其他抓包软件,比如Fidder,今天用过Charles后才发现还有比Fidder好用的抓包软件,这个比较简洁,数据查找也很直观。

    目标:使用抓包软件Charles对页面数据分析找到帐号密码以及验证码的接口,然后用Python实现模拟登录,并提取登录后的页面。

    二:运行环境

    • Python3.6,我用的是Anaconda集成版本,方便管理各种模块。

    • Charles版本是4.02,使用很简单,数据显示直观。

    三:实例分析

    1.分析网站登录情况,网址是http://my.hlju.edu.cn/login.portal 进去之后用火狐的浏览器进去开发者模式,看到了验证码地址captchaGenerate.portal?后面跟的随机数字代表的不同的验证码,我把这个配合主网址组成这个网址 http://my.hlju.edu.cn/captchaGenerate.portal? 在浏览器打开就是随机的验证码。

    Paste_Image.png Paste_Image.png

    2.验证码的网址已经找到了,现在我们使用Charles抓包工具,抓取登录时的数据分析一下,这一张是抓包后的图。

    Paste_Image.png

    3.然后点击这个userPasswordValidate.portal,可知道这个保存着登录的全部数据,我们点击一下From数据就变得整洁多了,可以看到有几个键值对这样我们帐号密码对应地址也找到了,之后就可以开始用Python模拟登录了。

    Login.Token1    *******
    Login.Token2    *******
    captcha w4dy
    goto    http://my.hlju.edu.cn/loginSuccess.portal
    gotoOnFail  http://my.hlju.edu.cn/loginFailure.portal
    
    Paste_Image.png

    四:实战代码

    帐号密码改成自己的学号密码即可模拟登录,之前爬虫都没有使用requests.session(),这里就需要因为用了这个回话对象,可以使几次请求都在同一个Cookie下进行,方便我们模拟登录后获取登录后的主页面。
    会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 connection pooling 功能。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。

    import requests
    from PIL import Image
    from bs4 import BeautifulSoup
    
    url1 = 'http://my.hlju.edu.cn/captchaGenerate.portal?'
    url2 = 'http://my.hlju.edu.cn/userPasswordValidate.portal'
    url3 = 'http://my.hlju.edu.cn'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
    }
    s = requests.session()
    response = s.get(url1, headers=headers)
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    with open('img\code.jpg', 'wb') as f:
        f.write(response.content)
    img = Image.open('img\code.jpg')
    img.show()
    data = {}
    data['Login.Token1'] = '帐号'
    data['Login.Token2'] = '密码'
    data['captcha'] = input('输入验证码:')
    data['goto'] = 'http://my.hlju.edu.cn/loginSuccess.portal'
    data['gotoOnFail'] = 'http://my.hlju.edu.cn/loginFailure.portal'
    response2 = s.post(url=url2, data=data, headers=headers)
    response3 = s.get(url3, headers=headers)
    print(response3.text)
    
    

    五:总结

    这次练习了一下Charles抓包的使用和对抓包数据的分析,每天写一写小Demo,继续加油!
    这里贴出我的github地址,我的爬虫代码和学习的基础部分都放进去了,有喜欢的朋友一起学习交流吧!github.com/rieuse/learnPython

    相关文章

      网友评论

      本文标题:Python爬虫日记四:Charles抓包获取黑大帐号密码验证码

      本文链接:https://www.haomeiwen.com/subject/iuqhtxtx.html