模拟登陆

来源:10-2 模拟登录的原理- session和cookie的原理

JaydenJune

2020-09-20

import json
import requests


def login():
    username = "正确的账户"
    password = "正确的密码"
    url = "https://accounts.douban.com/j/mobile/login/basic"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
    }

    post_data = {
        "ck": "",
        "name": username,
        "password": password,
        "remember": "true"
    }
    
    res = requests.post(url, data=post_data, headers=headers)
    res_json = json.loads(res.text)

    if res_json["status"] == "success":
        print("登录成功")
    else:
        print("登录失败")


if __name__ == '__main__':
    login()

debug:
res_json : {‘status’: ‘failed’, ‘message’: ‘parameter_missing’, ‘description’: ‘参数缺失’, ‘payload’: {}}

写回答

1回答

JaydenJune

提问者

2020-09-20

找到解决办法了.老师能给讲讲原因吗???

import json
import requests


def login():
    username = ""
    password = ""
    # 登录的url
    url = "https://accounts.douban.com/j/mobile/login/basic"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
    }

    post_data = {
        "ck": "",
        "name": username,
        "password": password,
        "remember": "true"
    }

    # --------------添加session后get请求一次再post成功----不知什么原因-------
    sess = requests.session()
    sess.get(url, headers=headers)
    res = sess.post(url, data=post_data, headers=headers)
    # ------------------------------------------------------------------------
    res_json = json.loads(res.text)

    if res_json["status"] == "success":
        print("登录成功")
    else:
        print("登录失败")


if __name__ == '__main__':
    login()


0
1
bobby
sess = requests.session()这个是关键, 使用session请求的话 那么下一次请求会带上上一次请求返回的cookie
2020-09-22
共1条回复

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2377 学习 · 1158 问题

查看课程