User-Agent防爬虫与应对策略

引题

最近在看爬虫,也准备学习一下防爬的策略,世上莫大之事就是,我可以爬别人网站,别人不许爬我网站。

正文

什么是User-Agent

User-Agent是一个HTTP请求头的一部分,它向Web服务器提供关于客户端(通常是浏览器)的信息,以便服务器能够针对不同的浏览器提供适当的内容或在检测异常时进行诊断。 User-Agent字符串通常包含浏览器的名称、版本号、操作系统和硬件平台。 例如:下面这个就是我浏览器的User-Agent

复制代码
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

User-Agent包含那些信息

Chrome/118.0.0.0表示使用的谷歌浏览器版本号为118.0.0.0。

Mozilla/5.0 表示引擎(版本 5.0)。

AppleWebKit/537.36表示使用引擎的版本号537.36。

(Windows NT 10.0; Win64; x64)表示运行在windows操作系统的64平台上。

User-Agent防爬

User-Agent防爬是一个比较常见的防爬策略。

判断User-Agent状态

在前端发送请求的时候需要判断User-Agent是否为空,正常浏览器发送请求的时候都会携带User-Agent进行发送请求。

我们后端c#可以利用HttpContext.Request.Headers.UserAgent来获取得到请求中的User-Agent。

创建一个post请求,判断User-Agent是否为空,不为空返回User-Agent。

cs 复制代码
[HttpPost]
public object Add()
{
    var PostUser = HttpContext.Request.Headers.UserAgent.ToString();
    if (PostUser == "")
    {
        return "来爬虫都不带User-Agent的吗";
    }
    else
    {
        return PostUser;
    }
}

我们这里用postman不携带User-Agent测试一下,我们看到这样做是可以的。

当然,我们也可以限制某些浏览器或者设备的访问。同时,我们也可以将对请求中携带的User-Agent进行计数,在一定时间内访问超过多少次数限制访问,毕竟那个正常用户一个小时访问成百上千。

python中的headers

应对User-Agent防爬

  1. 更换User-Agent:在爬虫程序中设置随机的User-Agent,增加请求的隐蔽性,避免被网站识别为爬虫。

  2. 伪装成浏览器:模拟真实用户的行为,设置与浏览器一致的User-Agent,同时增加一些随机的请求头和请求参数,模拟用户浏览网页的行为,这样能够避免网站识别为爬虫。

  3. 使用代理IP:使用代理IP进行请求,可以将真实的IP地址隐藏起来,避免网站识别爬虫。

  4. 避免频繁访问:设置合理的爬取时间间隔,避免频繁的请求,避免网站识别为爬虫。

  5. 使用验证码识别接口:部分网站会通过验证码来防止爬虫,可以使用验证码识别接口来自动化处理验证码,绕过该限制。

一般对User-Agent的防爬并不能起到多大作用,毕竟python中可以伪装,在发送HTTP请求时需要设置User-Agent为相应的搜索引擎标识。

我们使用requests库发送一个GET请求,并设置请求头中的User-Agent为伪装的User-Agent。这样服务器就会认为这个请求来自于伪装的User-Agent,返回的结果也可能会有所不同。

python 复制代码
import requests
url='网站'
headers={
    'User-Agent':'模拟User-Agent'
}
response=requests.get(url=url,headers=headers)

response.encoding = response.apparent_encoding
print(response.text)

但是,我爬别人的网站也要多这样的代码,所以,别人爬我网站也要多一些工作量!!!

相关推荐
小叶肥辉几秒前
LangChain链和LangGraph图的学习笔记【六】——提示语模板(3)——Few-Shot Prompting(少样本提示) 模板类
笔记·python·学习·langchain·prompt·aigc
for_ever_love__11 分钟前
爬虫项目: 获取高分电影的数据总结
开发语言·python·学习
文人sec13 分钟前
MYSQL:insert...select:为什么锁源表的所有行和间隙?怎么最快地复制一张表?
数据库·python·mysql
不叫猫先生19 分钟前
2026 Web Scraping 代理服务商怎么选?住宅代理与代理网络对比指南
爬虫·网络代理·代理·住宅代理
SamChan9037 分钟前
PyMuPDF vs pdfplumber vs pypdf:PDF 文本提取实测对比(翻译预处理视角)
python·ai·pdf
千舟软件41 分钟前
【宿舍管理小程序】新生入住不靠纸质表
大数据·运维·服务器·科技·业界资讯
辰辉创聚1 小时前
炎症与免疫相关细胞因子:信号通路、分类及科研检测应用
python·oracle·nycodenz·重组il-6蛋白·抗tnf-α抗体·il-1β蛋白
志尊宝1 小时前
Vue3 零基础每日笔记(032):Suspense 与异步组件——懒加载与顶层 await 终极方案
前端·javascript·vue.js·笔记·html5
ai小陈1 小时前
LTX2.5音视频生成任务验收实战:批量记录与音画质量检查
人工智能·python·深度学习·ai·音视频·gpu算力
Alice-YUE1 小时前
前端速通 Agent:5 个项目,一条学习路径
前端·大模型·ai agent·学习路径·deerflow