欢迎访问我的网站与公众号!点击与扫码即可进入,谢谢关注!

识别验证码

  1. 人工识别
  2. 第三方自动识别

模拟登陆流程的简单例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 根据登陆请求的formdata
# 验证码需要识别传入
data = {
'username':username,
'password':password,
'captcha': captcha,
# ...
}
response = requests.post(url=url, headers=headers, data=data)
# 检验是否请求成功
print(response.status_code)
# 传回来的数据
login_page_text = response.text
with open('1.html', 'w', encoding="utf-8") as f:
f.write(login_page_text)

模拟cookie操作

登陆之后,请求别的页面,需要登录凭证网站才知道登录状态是你的
常用凭证: cookie, token之类的加密凭证

手动处理(不推荐):

通过抓包工具,将cookie赋值封装headers={cookie:'cookie'}

自动处理:

  1. cookie来源 模拟登陆post请求后,由服务端创建的
  2. session会话对象
    • 作用:
      1. 可以进行请求的发送
      2. 如果请求中产生了cookie,该cookie会自动被存储/携带在该session对象中
session使用流程
  1. 创建一个session对象: session = requests.Session()
  2. 使用session对象进行模拟登陆post请求的发送(cookie会被存储在session中)
  3. 使用session对象对其他页面发送get请求(携带cookie)
1
2
3
4
5
6
7
8
9
session = requests.Session()
# url,headers,data...
# 使用session对象请求
response = session.post(url=url, headers=headers, data=data)
print(response.status_code)
# 后续也使用session来请求别的页面
page_text = session.get(url=url, headers).text
with open('1.html', 'w', encoding="utf-8") as f:
f.write(page_text)