python爬虫——爬虫伪装和反“反爬”

news2025/2/12 11:59:58
前言

爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序,从而减少被服务器封禁的风险;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧,并提供对应的代码案例。

 

1. User-Agent伪装

User-Agent是HTTP请求头的一部分,其中包含了浏览器、手机等使用的应用程序的信息。在爬虫中,使用默认的User-Agent,或者使用爬虫常用的User-Agent,容易被服务器识别为机器人,因此我们需要伪装User-Agent。使用Python中的requests库可以方便地添加User-Agent头。

import requests

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求URL
url = 'https://www.example.com'

# 发送请求
response = requests.get(url, headers=headers)

# 输出响应内容
print(response.text)
2. IP代理

单个IP频繁访问服务器容易被封禁,因此我们可以使用IP代理来访问网站。IP代理有免费和付费的,这里我们使用免费的IP代理。使用Python中的requests库可以方便地设置代理服务器。

import requests

# 设置代理服务器
proxies = {
    'http': 'http://127.0.0.1:1080',
    'https': 'https://127.0.0.1:1080'
}

# 请求URL
url = 'https://www.example.com'

# 发送请求
response = requests.get(url, proxies=proxies)

# 输出响应内容
print(response.text)
3. 随机访问时间间隔

频繁访问服务器容易被识别为机器人,因此我们需要模拟人类访问网站的行为,随机设置访问时间间隔。使用Python中的time库可以方便地设置访问时间间隔。

import requests
import time
import random

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求URL
url = 'https://www.example.com'

# 随机访问时间间隔
time.sleep(random.randint(0, 3))

# 发送请求
response = requests.get(url, headers=headers)

# 输出响应内容
print(response.text)
4. Cookie伪装

有些网站需要登录才能访问,我们需要在访问网站时携带cookie,以模拟登录状态。使用Python中的requests库可以方便地设置cookie。

import requests

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 设置cookie
cookies = {
    'sessionid': 'xxxx'
}

# 请求URL
url = 'https://www.example.com'

# 发送请求
response = requests.get(url, headers=headers, cookies=cookies)

# 输出响应内容
print(response.text)
5. 使用验证码识别库

有些网站需要进行验证码识别,我们可以使用OCR等技术进行识别。这里我们使用Python中的Tesseract-OCR库对验证码进行识别。

import requests
import pytesseract
from PIL import Image

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求验证码图片
url = 'https://www.example.com/captcha.png'
response = requests.get(url, headers=headers)

# 保存验证码图片
with open('captcha.png', 'wb') as f:
    f.write(response.content)

# 对验证码图片进行识别
captcha_image = Image.open('captcha.png')
captcha_text = pytesseract.image_to_string(captcha_image)

# 输出验证码文本
print(captcha_text)
6. 动态解析页面

有些网站会在前端使用JS异步加载数据,此时需要使用Selenium等工具对页面进行动态解析。这里我们使用Python中的Selenium库来模拟浏览器访问网站。

from selenium import webdriver

# 设置User-Agent头
options = webdriver.ChromeOptions()
options.add_argument(
    'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3')

# 请求URL
url = 'https://www.example.com'

# 使用Selenium打开网页
driver = webdriver.Chrome(options=options)
driver.get(url)

# 执行JS代码
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# 获取响应内容
response = driver.page_source

# 输出响应内容
print(response)

# 关闭浏览器
driver.quit()
7. 多账号轮流使用

如果一个账号频繁访问被封禁,我们可以使用多个账号轮流访问网站。这里我们使用Python中的random库来随机选择账号。

import requests
import random

# 用户列表
users = [
    {'username': 'user1', 'password': 'password1'},
    {'username': 'user2', 'password': 'password2'},
    {'username': 'user3', 'password': 'password3'}
]

# 随机选择一个账号
user = random.choice(users)

# 构造登录信息
data = {
    'username': user['username'],
    'password': user['password']
}

# 请求登录URL
login_url = 'https://www.example.com/login'
response = requests.post(login_url, data=data)

# 输出响应内容
print(response.text)

总结

总的来说,伪装的目的是让爬虫看起来更像人类行为,反“反爬”的目的是应对复杂的反爬虫机制。在实际爬虫项目中,需要根据具体情况选择合适的伪装和反“反爬”技巧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/864280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) 二、CVE-2022-23960 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) Title TF-A披露通过分支预测目标重用(branch prediction target reuse)引发的前瞻执行处理器漏洞 CV…

2000-2022年全国各地级市绿色金融指数数据

2000-2022年全国各地级市绿色金融指数数据 1、时间:2000-2022年 2、来源:来源:统计局、科技部、中国人民银行等权威机构网站及各种权威统计年鉴,包括全国及各省市统计年鉴、环境状况公报及一些专业统计年鉴,如 《中国…

工厂老化设备维护的重要性及如何维护老化设备?

工业领域的老化设备问题日益凸显,对于保持生产稳定和效率至关重要。本文将探讨工厂老化设备维护的重要性,并介绍如何通过PreMaint设备数字化平台实现对老化设备的高效维护,从而确保工厂持续高效运转。 一、工厂老化设备的重要性 随着时间的推…

Flutter实现倒计时功能,秒数转时分秒,然后倒计时

Flutter实现倒计时功能 发布时间:2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码,供大家参考,具体内容如下 有一个需求,需要在页面进行显示倒计时,倒计时结束后,做相应的逻辑处理。 实…

【Spring专题】Bean的声明周期流程图

前言 我向来不主张【通过源码】理解业务,因为每个人的能力有限,甚至可能会因为阅读错误导致出现理解上的偏差,所以我决定,还是先帮大家【开天眼】,先整体看看流程图,好知道,Spring在写源码的过…

山东Certum公网IP证书申请

Certum作为欧洲第一个通过WebTrust的CA认证机构,一直致力于为用户提供高质量的数字证书服务。WebTrust是一种全球认可的数字证书认证标准,它确保了数字证书颁发机构的操作符合严格的标准和程序。Certum通过WebTrust的认证,证明了其数字证书服…

Practices9(双指针)|283. 移动零、11. 盛最多水的容器、15. 三数之和

283. 移动零 1.题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,…

豪越HYDO智能运维助力智慧医院信息化建设

随着国家政策的推动与支持,医疗行业信息化应用不断普及,大数据、AI、医疗物联网等技术的应用,快速推动了电子病历、智慧服务、智慧管理的智慧医院建设和医院信息标准化建设,通过不断探索创新“智慧医院”服务模式,实现…

中国首份仿生机器人产业全景报告发布!大模型带来加速度,三大指标决定竞争格局

AGI火热发展,让仿生机器人的实现补全了最后一块重要拼图。 一直以来,仿生机器人都代表人类对于科技的一种终极想象,备受产业圈热捧。 马斯克、雷军等,纷纷押注这一赛道。特斯拉全尺寸仿生机器人Optimus、小米全尺寸通用人形机器…

资深测试员才知道的五个行业秘密

作为一名资深测试员,总有一些平时难以诉说的行业秘密,我也不例外。也许这些秘密你认可,也许你嗤之以鼻,但不管如何,我都希望能给你带来一丝感悟,更深的认识测试,并走得更远。 1、手工测试不可替…

【Linux】网络基础2

文章目录 网络基础21. 应用层1.1 协议1.2 HTTP 协议1.2.1 URL1.2.2 urlencode和urldecode1.2.3 HTTP协议格式1.2.4 HTTP的方法1.2.5 HTTP的状态码1.2.6 HTTP 常见的header1.2.7 最简单的HTTP服务器 2. 传输层2.1 端口号2.1.1 端口号范围划分2.1.2 认识知名端口号2.1.3 netstat2…

RFID技术应用于服饰市场

RFID技术应用于服饰市场 RFID技术已广泛应用于服饰制造加工行业,为企业提供了许多实用的解决方案。下面是一些常见的应用场景: 库存管理:RFID标签可以被缝制或附着在服装上,通过RFID读写器进行扫描。企业可以实时跟踪和管理库存…

配置中心替换测试设计分享

一、背景 项目后端服务开始一直使用Apollo配置中心(携程开发)进行配置管理,由于公司自研了配置中心B,为了后续方便管理和降本增效,后端服务使用的配置需要由Apollo配置中心切换到自研配置中心B。后续不再使用Apollo配置。 替换前架构&#x…

Photoshop神器插件Alpaca安装与使用指南

Alpaca是一款Photoshop的插件,它可以自动生成各种图片,大大提高我们的工作效率。今天就为大家介绍如何安装和使用Alpaca这个好用的插件。 一、下载并安装Alpaca 在Chrome浏览器中打开Alpaca的官网,点击join alpaca beta 注册帐号。 下载完成后,解压安装包,运行里面的Alpaca …

米尔核心板纯国产入门级性价比优选T113

近些年,国产MPU弯道超车越来越给力,芯片国产化,不再纯依赖进口,产品平台选型自主可控,未来国产化的主芯片平台产品将进一步蓬勃发展。为满足客户对入门级、低成本、高性能的国产需求,米尔电子推出国产入门级…

28 | Boss直聘数据分析

针对boss直聘网的招聘信息,然后分析互联网发展排名前十的城市在互联网方面职位的薪水,学历要求,经验要求,等等信息。 准备从以下几个方面进行分析: (1)各个城市的平均工资 (2)各个学历的平均工资 (3)各个岗位的平均工资 (4)不同工作经验要求的工资 (5)各个经验…

通讯录(静态版)

通讯录(静态版) 通讯录无非就是实现以下功能: 1.前言 首先要知道一个人要包含哪些信息,这里就以(姓名,年龄,性别,电话号码,地址)为例,这些信息…

ssh-keygen 做好免密登录后不生效

免密说明 通常情况下,我们ssh到其他服务器需要知道服务器的用户名和密码。对于需要经常登录的服务器每次都输入密码比较麻烦,因此我们可以在两台服务器上做免密登录,即在A服务器可以免密登录B服务器。 在A服务器上登录B服务器时,…

29 | 广州美食店铺数据分析

广州美食店铺数据分析 一、数据分析项目MVP加/价值主张宣言 随着经济的快速发展以及新媒体的兴起,美食攻略、美食探店等一系列东西进入大众的眼球,而人们也会在各大平台中查找美食推荐,因此本项目做的美食店铺数据分析也是带有可行性的。首先通过对广东省的各市美食店铺数量…

Qt扫盲-Qt Model/View 理论总结 [上篇]

Qt Model/View 理论总结 [上篇] 一、概述1.model / view 架构2. Model3. View4. Delegate5. 排序6. 快捷类 二、使用model/view1. Qt包含两种 model2. 在现有 model 中使用 view 三、Model 类1. 基本概念1.model 索引2. 行和列2. item 的父 item3. Item roles4. 总结 2. 使用mo…