模拟登陆csdn失败,帮忙看下哪里有问题

从图中得知表单需要哪些数据
938215-20160809204500793-1563778880.png

下面的两行代码保存cookies

session = requests.Session()
response = session.get(url, headers=headers).content

下面的代码获取表单所需数据

soup = BeautifulSoup(response, "lxml")
# 解析页面获取表单必须的数据
lt = soup.find(attrs={"type": "hidden", "name": "lt"})['value']
execution = soup.find(attrs={"type": "hidden", "name": "execution"})['value']
event_id = soup.find(attrs={"type": "hidden", "name": "_eventId"})['value']

最后还是登录失败


下面是完整代码

import requests
from bs4 import BeautifulSoup

url = 'https://passport.csdn.net/account/login'

headers = {
        "Host": "passport.csdn.net",
        "Referer": "https://passport.csdn.net/account/login",
        "User-Agent": 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89'
                      ' Safari/537.36',
        "Origin": "https://passport.csdn.net"
    }


def login(username, password):
    captcha_solution = None
    captcha_id = None
    lt = None
    execution = None
    event_id = None
    post_data = {
        "username": username,
        "password": password,
        "rememberMe": "true",
    }
    session = requests.Session()
    response = session.get(url, headers=headers).content
    soup = BeautifulSoup(response, "lxml")
    # 解析页面获取表单必须的数据
    lt = soup.find(attrs={"type": "hidden", "name": "lt"})['value']
    execution = soup.find(attrs={"type": "hidden", "name": "execution"})['value']
    event_id = soup.find(attrs={"type": "hidden", "name": "_eventId"})['value']
    # print(lt)
    # print(execution)
    # print(event_id)
    # 将获取的数据加入表单
    post_data['lt'] = lt
    post_data['execution'] = execution
    post_data['_eventId'] = event_id
    #  所有参数准备完毕 开始登录
    html = session.post(url, data=post_data, headers=headers)
    print(type(html.cookies))
    for key, value in html.cookies.items():
        print(key+": "+value)
    print(html.text)
    # if html.url == 'https://www.csdn.net/':
    #     print(html.text)
    # else:
    #     print('fail')


login('15200689458', '199704105896abc')
阅读 2.2k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题