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)

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

相关推荐
daad77711 分钟前
用 HackRF + GNU Radio 制作 FM 发射机:从 WAV 到 103 MHz 空中信号
服务器·gnu·fm
小妖66626 分钟前
设置了 box-sizing: border-box; 不管用,下边框还是被挤压没了
前端·css·html
刀锋000143 分钟前
从0到1手搓生产级 AI Agent:LangGraph 1.2 + LangChain 1.3 保姆级实战(全部代码已跑通)
人工智能·python·langchain·ai agent·langgraph
夜雪一千1 小时前
Python 如何实现 SHA 加密?SHA1 / SHA256 / SHA512 实战教程
开发语言·python
码云骑士1 小时前
106-模型量化技术-GGUF-GPTQ-AWQ-bitsandbytes对比
python
御风之翼_唤星者1 小时前
LoadFramePackModel模块报错bad escape
python·ai
雪隐1 小时前
个人电脑玩AI-16让5060 Ti给你打工——5060Ti 16G 跑 MiniMax-Music-3:从下载到 60s 出歌的全流程
前端·人工智能·后端
民乐团扒谱机1 小时前
【微实验】谐波乘积谱(HPS)算法深度解析:原理、数学与代码实现
开发语言·人工智能·python·算法·语音识别·音乐
我星期八休息2 小时前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
小白勇闯网安圈2 小时前
Django Ajax、批量操作与分页实践
python·django