Python-常见的反爬虫手段

Python-常见的反爬虫手段

对于静态页面针对爬虫的手段常常为Headers验证及针对IP的用户行为分析。

一、Headers反爬虫机制

Headers反爬虫机制常常为验证Headers中的信息,常需要验证的信息为UserAgent或X-Token等。针对UserAgent的反爬虫手段,通过导入 fake_useragent 包随机选择UserAgent的方式进行请求。

import requests
from fake_useragent import UserAgent

base_url = http://icanhazip.com
ua = UserAgent()
# User-Agent 采用随机选取的方式
headers = {
          
   
    X-Token: eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MTQ4NDY3MTksImp0aSI6IjVhMmMwYWMyLTAzNTYtNDQ5ZXXXXX
    , Cookie: JSESSIONID=3555BE5F1XXXXXX
    , User-Agent: ua.random
}
response = requests.get(base_url, headers=headers)
二、针对IP进行用户行为分析的反爬虫机制

针对单个IP的用户行为分析,需要使用切换不同代理IP间断的拉取数据,从而避免被网站屏蔽。若资源充足,还可以使用分布式爬虫。

import requests

"""
1.需要将代理IP加入数组
2.使用 url 验证代理IP是否可用
3.使用代理IP访问需要爬取的网站
"""
url = http://icanhazip.com
proxies = [
    {
          
   http: http://107.151.182.247:80},
    {
          
   http: http://206.253.164.101:80}
]
headers = {
          
   
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit
                  /537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
}
# proxies = random.choice(proxies)

for ips in proxies:
    try:
        # 设置重连次数
        requests.adapters.DEFAULT_RETRIES = 3
        res = requests.get(url, headers=headers, timeout=3, proxies=ips)
        # 查看是否为代理IP
        print(res.text)
    except:
        print("1代理IP无效!")

后续更新

经验分享 程序员 微信小程序 职场和发展