美文网首页
13.提交动态参数与Session

13.提交动态参数与Session

作者: 学飞的小鸡 | 来源:发表于2018-10-31 21:00 被阅读0次
    
    import requests
    from lxml import etree
    
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    }
    
    # 登录页的url
    login_page = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
    
    # 登录需要提交的内容: 用户名、密码、静态表单、两个token、验证码
    
    # 经过分析,两个token和验证码是在访问登录页的时候后动态生成
    # login_html = requests.get(login_page)
    # 访问登录页面的时候也要用Session,因为token值保存在后台,Session可以记录后台的token值
    s = requests.session()
    login_html = s.get(login_page)
    
    
    # 获取两个token值
    login_tree = etree.HTML(login_html.text)
    a = login_tree.xpath("//input[@id='__VIEWSTATE']/@value")[0]
    b = login_tree.xpath("//input[@id='__VIEWSTATEGENERATOR']/@value")[0]
    # print(a,b)
    # 获取验证码
    code_url = 'https://so.gushiwen.org'+login_tree.xpath("//img[@id='imgCode']/@src")[0]
    # 下载验证码
    # 动态生成的验证码也需要用Session请求
    code_info = s.get(code_url)
    # print(code_info.content)
    with open('code.png', 'wb') as fp:
        fp.write(code_info.content)
    
    # 验证码可以有以下几种处理机制,用第三方的AI平台接口来识别、自己训练一个AI、人工识别
    code = input('请输入你看到的验证码:')
    
    
    
    # 登录信息提交的url
    login_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'
    
    # 请求体
    data = {
        '__VIEWSTATE': '4ycB5xq0byEmR55uPGXID325gZgUsrgVWV/c/28MBPQQ/4Szc7M0PVHwBnCWRg9r65UuqmDbD/SjF0TNIbeIsMg5cUjuNAK1qung70hb3kaQKQ2ziTgi+7CwbGw=',
        '__VIEWSTATEGENERATOR': 'C93BE1AE',
        'from': 'http://so.gushiwen.org/user/collect.aspx',
        'email': 'fanjianbo666@163.com',
        'pwd': '12345678',
        'code': code,
        'denglu': '登录'
    }
    
    r = s.post(url=login_url, data=data, headers=headers)
    print(r.text)
    
    

    相关文章

      网友评论

          本文标题:13.提交动态参数与Session

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