详细解析反爬手段以及处理方案

本文详细解析了常见的反爬机制,包括User-Agent过滤、IP访问频率限制、session访问限制、验证码验证等,并提供了相应的处理方案,如修改User-Agent、使用代理IP、模拟正常用户操作等。
摘要由CSDN通过智能技术生成

详细解析反爬手段以及处理方案

前言

​ 互联网时代,无论在工作上,还是生活上都离不开网络,而网络能给我们带来什么?

​ 新闻,小说,资料,各行业的数据或者报表等等;

​ 比如:快毕业了为了论文,在各种网站上爬取需要的数据进行分析;还有一些为了兴趣爱好,爬取各种类型的图片,视频,文章,数据等。

​ 各网站的开发人员为了约束这种行为,开始绞尽脑汁,采取各种手段去约束爬虫,于是,有了反爬机制!

常见反爬机制
1,通过对 User-Agent 过滤来控制访问

无论是浏览器,程序,还是爬虫,在向服务器发起网络请求时,都会先发送一个请求头文件 headers ,

比如:

{
   
  "headers": {
   
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Accept-Language": "zh-CN,zh;q=0.9,zh-HK;q=0.8", 
    "Host": "httpbin.org", 
    "Sec-Fetch-Dest": "document", 
    "Sec-Fetch-Mode": "navigate", 
    "Sec-Fetch-Site": "none", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-5fe2b4fe-6e4edc1c4dbbe85a3c25492b"
  }
}

# "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"

请求头大部分的字段主要是浏览器向服务端 “表明自己的身份”用的,很多网站都会建立 user-agent 白名单,只有在正常范围内的 user-agent 才能正常访问 。

user-agent 是一个阅读器标志,用户都是一中阅读器,网站很粗糙的辨别你有咩有作弊,必须要结构不同的阅读器标志,不然就会认为你是爬虫,宁杀错,不放过,你说气不气;

缺点:很容易伪造头部

处理方案:

修改阅读器标志,模拟其他阅读器的标志(定义一个标志库,随机获取一个),能够通过API接口实现各种阅读器的收集模拟;

# 定义 user-agent/标志库
# 第一种方法
def get_user_agent():
    """
    模拟headers的user-agent字段,
    返回一个随机的user-agent字典类型的键值对
    """
    agents = [
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0;) Gecko/20100101 Firefox/61.0",
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
    "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
    ]
    
    fakeheader = {
   }
    fakeheader['User-agent'] = agents[random.randint(0,len(agents))]
    return fakeheader

def get_html(url):
    try:
        r= requests.get(url, timeout=30,headers=get_user_agent())
        r.raise_for_status
        r.encoding = r.apparent_encding
        return r.status_code
   except:
    	return "someting wrong!"
    
 # 第二种方法
def get_html():
    agents = [...]
    headers = {
   
        'User-Agent': random.choice(user_agent_list
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值