最近因为一些原因需要小爬一下JD,数据量也不大,但是遇到了反爬,简单记录一下解决方法。
代理IP
如果用同一个IP短时间内对一个网站的API发送多个请求,很容易就会被发现并且禁止浏览,这个时候就需要使用代理IP,常见的代理方法有这么几种:
- 从网络上收集一些免费代理IP,然后建立成一个代理池,每次随机取出一个IP进行请求。
- 购买付费代理API,对这个API发送请求时,得到的响应是代理IP和端口,其实和1是类似的。
- 购买付费的隧道代理,隧道代理会对请求进行动态转发,效果更好,当然价格也更贵。
如果用 Python 的 Requests
库写爬虫时需要用到代理,只需要给请求加上一个 proxies
参数即可。
import requests
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
requests.get('http://example.org', proxies=proxies)
动态UA
网上找了一个可以自动生成各式各样假数据的库——faker,当然这里用到的只有假UA这一个功能。
from faker import Faker
fake = Faker()
Faker.seed(0)
for _ in range(5): # 生成5个随机UA
print(fake.user_agent())