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无效!")
后续更新
