• 爬虫伪装头部


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

    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

  • 相关阅读:
    mysql批量导入删除
    sql查重去除id最小值
    Rest构建分布式 SpringCloud微服务架构项目
    Django模板语言及视图
    Django模板语言
    面向对象进阶
    初识面向对象
    os模块和sys模块
    random模
    时间模块
  • 原文地址:https://www.cnblogs.com/lfri/p/12205511.html
Copyright © 2020-2023  润新知