python爬虫工程师 | 都会遇到的反爬手段,详细展示低难度反爬
创始人
2024-05-24 03:54:16
0

在爬虫实战过程中,常见的反爬手段如下所示。

  • IP 地址限制:网站可以检测爬虫的 IP 地址,并限制爬虫访问。
  • User-Agent 限制:网站可以通过检测请求头中的 User-Agent 来识别爬虫。
  • Referrer 限制:网站可以通过检测请求头中的 Referrer 字段来识别爬虫。
  • Cookies 限制:网站可以通过在响应中发送 Cookies 来识别爬虫。
  • 频率限制:网站可以限制爬虫访问频率,以防止爬虫对网站造成过多压力。
  • JavaScript 混淆:网站可以使用 JavaScript 混淆技术来防止爬虫识别页面内容。
  • HTTPS 加密:网站可以使用 HTTPS 加密协议来防止爬虫抓取数据。

文章目录

    • IP地址限制
    • User-Agent 限制
    • Referrer 限制
    • Cookies 限制
    • 频率限制反爬
    • JavaScript 混淆
    • HTTPS 加密反爬

IP地址限制

IP 地址限制是指网站可以通过检测请求的 IP 地址,并限制特定 IP 地址访问网站。

这是一种常用的反爬手段,主要用于防止爬虫对网站造成过多压力。

下面是一个 Python 代码示例,使用了 requests 库进行请求,并在请求头中指定了代理 IP 地址:

import requestsurl = "https://pachong.vip"
# 设置代理 IP 地址
proxies = {"http": "http://代理IP:端口","https": "http://代理IP:端口",
}
# 注意 proxies 参数
response = requests.get(url, proxies=proxies)print(response.text)

如果网站限制了特定 IP 地址的访问,使用代理 IP 地址就可以绕过限制,并成功抓取数据。

User-Agent 限制

User-Agent 限制是指网站可以通过检测请求头中的 User-Agent 字段,识别请求来源是否是爬虫。

如果识别为爬虫,网站将限制或拒绝该请求。

python爬虫工程师 | 都会遇到的反爬手段,详细展示低难度反爬

下面是 User-Agent 字段的格式:

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

👉 为了绕过 User-Agent 限制,可以在请求头中指定一个常见的浏览器 User-Agent,以模拟浏览器访问,以下是代码示例:

import requestsurl = "https://pachong.vip"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'
}response = requests.get(url, headers=headers)print(response.text)

Referrer 限制

Referrer 限制是指网站可以通过检测请求头中的 Referrer 字段,识别请求的来源。

如果识别为爬虫,网站将限制或拒绝该请求。

下面是 Referrer 字段的格式:

Referer: https://www.example.com

为了绕过 Referrer 限制,可以在请求头中不指定 Referrer,或者指定一个普遍的 Referrer,以下是使用 Python 的 Requests 库的代码示例:

import requestsurl = "https://pachong.vip"headers = {'Referer': 'https://pachong.vip'
}response = requests.get(url, headers=headers)
print(response.text)

Cookies 限制

Cookies 限制反爬是指在服务器端使用 Cookies 技术限制爬虫访问数据的手段。

Cookies 是一种存储在客户端的数据结构,用于识别客户端与服务器端的会话。

服务器端可以使用 Cookies 存储登录信息,并在每次请求时发送给客户端,以识别客户端的身份。

如果服务器端使用 Cookies 限制爬虫访问数据,只有携带正确 Cookies 的请求才能够获得正确数据。

下面是使用 Python 爬取网站数据,并携带 Cookies 的代码示例:

import requests# 设置 Cookies
cookies = {"Cookie1": "xiangpica","Cookie2": "beautiful",
}# 发送请求,并携带 Cookies
response = requests.get("https://pachong.vip", cookies=cookies)# 打印响应数据
print(response.text)

在这里插入图片描述

频率限制反爬

频率限制反爬是指在服务器端限制客户端的请求频率的反爬手段。

服务器端可以限制一个 IP 地址每秒只能发送 10 次请求,如果超过这个频率,则直接拒绝请求。

Tips:频率限制反爬可以防止爬虫短时间内大量请求数据,防止服务器被爬虫程序消耗资源,影响服务器正常功能。

import time
import requests# 请求频率,每秒请求次数
frequency = 10# 记录请求开始时间
start_time = time.time()# 记录请求次数
request_count = 0while True:# 如果请求次数小于请求频率if request_count < frequency:# 发送请求response = requests.get("https://pachong.vip")# 打印响应数据print(response.text)# 增加请求次数request_count += 1# 如果请求次数等于请求频率if request_count == frequency:# 计算已经用时elapsed_time = time.time() - start_time# 如果已经用时小于 1 秒if elapsed_time < 1:# 等待剩余时间time.sleep(1 - elapsed_time)# 重置请求开始时间start_time = time.time()# 重置请求次数request_count = 0

学习时先声明请求频率变量: frequency ,并在循环中使用该值来控制请求次数。

每次请求时,我们检查请求次数是否小于请求频率。

如果是,我们就发送请求,并增加请求次数。

如果请求次数等于请求频率,我们就计算已经用时的时间,并等待剩余时间以使得请求频率不超过限制。

JavaScript 混淆

JavaScript 混淆反爬是一种防止爬虫自动获取网站内容的常见手段。在这种情况下,网站的某些关键数据可能已经被混淆,使其难以被自动抓取。

在 Python 中,我们可以使用 BeautifulSoup 和 Selenium 等库来处理 JavaScript 混淆反爬。

from selenium import webdriver# 配置驱动器
driver = webdriver.Chrome()# 访问混淆页面
driver.get("https://www.pachong.vip/blog")# 获取混淆数据
data = driver.find_elements_by_name("list-group")[0].text# 关闭浏览器
driver.quit()

HTTPS 加密反爬

HTTPS 加密是一种防止网络数据被窃取的常用技术,也是反爬技术的一部分。在 HTTPS 加密的情况下,爬虫程序无法直接访问网站数据,需要使用特定的方法来处理。

在 Python 中,我们可以使用 requests 库来处理 HTTPS 加密反爬:

import requests# 访问 HTTPS 页面
response = requests.get("https://www.pachong.vip")# 获取页面内容
content = response.text# 打印页面内容
print(content)

如果网站使用的是自定义证书,您可以在请求时传递自定义证书。这样可以避免 SSL 证书错误,并且在请求时只验证指定的证书。

以下是使用自定义证书的代码示例:

import requests# 访问 HTTPS 页面,使用自定义证书
response = requests.get("https://www.pachong.vip/secure-page", verify="./cert.pem")# 获取页面内容
content = response.text# 打印页面内容
print(content)

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 874 篇原创博客

👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...