爬虫之验证码相关
声明
本教程仅供学习参考,请勿用在非法途径上,违者后果自负,与笔者无关。 –涂寐
识别方式
- 人工识别
- 智能识别
云打码使用
- 根据官方开发文档调用
登录古诗文网
简要概括
- 登陆界面获取验证码图片
- 调用验证码识别平台接口识别
- 勾选 Network –> Preserve log –> 捕获登录请求
- 分析后模拟登录,为保证会话的持续连接,使用requests.session().post()/get() 发起请求
实战笔记
1 | import os |
Cookie相关
要点与答疑
- http/https 无状态协议
- 发起登录请求提示验证码不正确:发起的登录请求并未基于获取验证码状态发起。
- cookie反反爬机制
- 手动封装:headers = {‘cookie’: ‘***’}
- 自动获取(session会话)
- post 请求模拟登录后获得服务器返回的 cookie
- session会话对象:使用 session 发起请求时产生的 cookie 自动存入 session 对象中
session会话流程
- 创建对象:session = requests.session()
- 通过 session.post() 或 session.get() 的方式发起请求
实例
- 看古诗文网实战笔记
代理服务器
代理作用
- 反反爬策略–突破IP限制
- 隐藏真是IP
相关网站
- 度娘给你答案
代理类型
- http:http协议URL
- https:https协议URL
代理匿名度
- 透明:服务器知道使用代理和真实IP
- 匿名:服务器知道使用代理,不知真实IP
- 高匿名:服务器不知道使用代理和真实IP
代理实例1
- 实话实说,IP还是没变
1
2
3
4
5
6
7
8
9import requests
proxy = {
'https': 'https://222.128.171.133:3128'
}
response = requests.get("http://httpbin.org/ip", proxies=proxy)
print(response.text)
代理实例2
- 这个更惨,同样的代理访问百度一直报错
- 别骂了别骂了,找过度娘了,可能度娘留了一手
- 不纠结,留下笔记,以后用到再改改
- 实锤了,要充钱,白嫖的基本没了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32#!/usr/bin/env python3
# -*-coding:utf-8-*-
import time
import requests
if __name__ == "__main__":
# session = requests.Session()
# session.trust_env = False
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
url = "https://www.baidu.com/s?ie=UTF-8&wd=ip"
# 报错
# requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: /s?ie=UTF-8&wd=ip (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1076)')))
# 再次报错
# requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: /s?ie=UTF-8&wd=ip (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002426CB7C408>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))
# i = 0
# while True:
# try:
#
response = requests.get(url=url, headers=headers, proxies={'https': 'https://222.128.171.133:3128'}, verify=False)
# except:
# i = i+1
# print("有问题", i)
# time.sleep(5)
# continue
# print("admin" + response.status_code)
# with open('./proxy.html', 'w', encoding='utf-8') as fp:
# fp.write(proxy_page_text)
# print('瞅瞅这个./proxy.html文件')
- 本文标题:爬虫之验证码相关
- 本文作者:涂寐
- 创建时间:2021-12-28 10:26:39
- 本文链接:article/74cf08f5.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论