zoukankan      html  css  js  c++  java
  • 爬虫伪装头部

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

    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

  • 相关阅读:
    5.1.5 JunkMail Filter
    POJ1067 取石子游戏 跪跪跪,很好的博弈论
    USACO Section 3.2 Magic Squares (msquare)
    5.1.1 A Bug's Life
    USACO Section 3.3 Riding The Fences (fence)
    USACO Section 3.1 Stamps (stamps)
    5.2.7 Entropy
    USACO Section 3.1 AgriNet (agrinet)
    5.1.8 How Many Answers Are Wrong
    4.3.6 N皇后问题
  • 原文地址:https://www.cnblogs.com/lfri/p/12205511.html
Copyright © 2011-2022 走看看