伪装头部是最基本的反反爬虫方法,下面假设我们有一个网站:
from flask import Flask app = Flask(__name__) @app.route('/getInfo') def hello_world(): return "这里假装有很多数据" @app.route('/') def index(): return "个人主页" if __name__ == "__main__": app.run(debug=True)
现在就可以通过http://127.0.0.1:5000/ 访问了。
我们想看看请求的 header 信息
from flask import request #记得引入request
@app.route('/getInfo') def hello_world(): print(request.headers) return "这里假装有很多数据"
结果看到的 headers 信息是这样的
Host: 127.0.0.1:5000 User-Agent: python-requests/2.22.0 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive
“User-Agent: python-requests/2.21.0”,居然使用 python 的库来请求,于是服务端判断一下就把你封了。
@app.route('/getInfo') def hello_world(): if(str(request.headers.get('User-Agent')).find('python') >= 0): return "小子,使用爬虫是吧?" else: return "这里假装有很多数据"
怎么办呢?现在的你学会假装自己是浏览器,
import requests if __name__ == '__main__': headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36' } url = 'http://127.0.0.1:5000/getInfo' response = requests.get(url, headers=headers) print(response.text)
这样又能开心的获取数据了。
当然,你还可以搞个用户代理列表,每次从中随机选取。