伪装头部是最基本的反反爬虫方法,下面假设我们有一个网站:

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)

这样又能开心的获取数据了。

当然,你还可以搞个用户代理列表,每次从中随机选取。

 

 

参考链接:https://zhuanlan.zhihu.com/p/59745385

个性签名:时间会解决一切