• python爬虫模拟登录的图片验证码处理和会话维持


    目标网站:古诗文网

    登录界面显示:

     打开控制台工具,输入账号密码,在ALL栏目中进行抓包

    数据如下:

    登录请求的url和请求方式

     登录所需参数

     参数分析:

    __VIEWSTATE和__VIEWSTATEGENERATOR可以在登录界面获取,code为验证码,email为账号,pwd为密码,from为空,denglu为固定参数

    分析__VIEWSTATE和__VIEWSTATEGENERATOR

     

     可通过解析登录界面获取

    整体代码如下:

    # 引入各种库
    import requests
    from lxml import etree
    import pytesseract
    from PIL import Image
    from io import BytesIO
    
    # 会话保持
    s = requests.session()
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
    }
    # 登录界面路由
    login_url = 'https://so.gushiwen.org/user/login.aspx?from='
    r = s.post(login_url,headers=headers)
    res = etree.HTML(r.text)
    # 获取登录参数
    __VIEWSTATE = res.xpath('//input[@id="__VIEWSTATE"]/@value')[0]
    __VIEWSTATEGENERATOR = res.xpath('//input[@id="__VIEWSTATEGENERATOR"]/@value')[0]
    
    # 获取验证码
    codeimage = s.get('https://so.gushiwen.org/RandCode.ashx')
    
    # 识别验证码
    def get_code(data):
        img = Image.open(BytesIO(data))
        img = img.convert('L')
        captcha = pytesseract.image_to_string(img)
        print(captcha)
        img.close()
        return captcha
    
    # 构造登录参数
    formdata = {
        '__VIEWSTATE': __VIEWSTATE,
        '__VIEWSTATEGENERATOR': __VIEWSTATEGENERATOR,
        'from': '',
        'email': '你的账号',
        'pwd': '你的密码',
        'code': get_code(codeimage.content),
        'denglu': '登录'
    }
    # 模拟登录
    res = s.post(login_url,headers=headers,data=formdata)
    # 判断是否登录成功,成功的话会跳转到个人中心
    if '我的收藏' in res.text:
        print('登陆成功')
    else:
        print('登陆失败')

    控制台输出:

     注意:文章账号秘密是错误的,读者可以自己申请账号,

    爬虫的开始需使用

    s = requests.session()

    来使会话维持,否则请求的验证码与登录时不同步,

    验证码识别有成功率,不一定一次成功。

    python系列教程:

    链接:https://pan.baidu.com/s/10eUCb1tD9GPuua5h_ERjHA
    提取码:h0td

  • 相关阅读:
    [01] 异常的概念和处理
    [03] 节点流和处理流
    [02] 输入/输出流 和 字节/字符流
    [01] File类
    Apache的https协议配置
    Apache的虚拟主机配置
    Apahce的虚拟用户认证及server-status页
    Apache配置日志功能
    Apache脚本路径别名(CGI接口)
    Apache配置站点根目录、用户目录及页面访问属性
  • 原文地址:https://www.cnblogs.com/nmsghgnv/p/12323320.html
Copyright © 2020-2023  润新知