反爬蟲判斷方法

1 最簡單的網站反爬蟲方法----根據 User-Agent 判斷是否是爬蟲

1.新建一個 Flask 項目

2.網站對於用戶請求的響應處理,代碼如下:

在默認的 unspider.py 文件中輸入如下代碼

from flask import Flask,request

app = Flask(__name__)

def isSpider():
    user_agent = request.headers.get('User-Agent')
    if 'Python'.lower() in user_agent.lower():
        #python 爬蟲的默認 User-Agent:Python-urllib/3.6
        return True
    else:
        return False

@app.route('/')
def hello_world():
    if isSpider():
        return '系統判斷您是一個機器人,拒絕了您的訪問!' else:
    return '你好,歡迎您的到來!'

if __name__ == '__main__':
    app.run()

然後,運行當前項目文件。

(1)使用瀏覽器訪問,訪問效果如下:

(2)使用爬蟲程序進行驗證
新建 spider.py 文件,輸入如下代碼:

from urllib import request
response = request.urlopen('http://127.0.0.1:5000/')
content = response.read().decode('utf-8')
print(content)

然後,運行當前程序,輸出結果如下 :

2 Flask 使用日誌記錄的方式

一、系統日誌

步驟:

1.初始化 flask 應用實例在 flask 中使用 logger,需要初始化一個 flask 的應用:

app = Flask(__name__)

2. 調用 logger直接調用 logger 方法

app.logger.info("my first logging")

這裏記錄的是 info 級別的日

3. 查看結果運行結果如下:

INFO in Code [D:/xxxxx/flask/Code.py:20]:

my first logging

默認情況下,flask 的日誌是打印在屏幕上的。不過一般我們是需要在一個文件裏進行日誌記錄的,下面我們來看一下如何設置日誌記錄在文件上。

二、日誌文件步驟:

1.引用 logging

因爲 flask 的日誌底層引用的是 python 的 logging,設置需要通過 python 的 logging 進行,如下代碼:

import logging

2. 設置 logging 的路徑

logging.basicConfig(filename="D:\\log.txt",format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

上面的代碼裏設置了兩個參數,filename 設置的是日誌的記錄文件(注意設置文件夾的權限),後一個參數設置了日誌的打印格式。格式化中的常用參數如下:

3. 查看結果
再次運行後,可以看到在我們設置的路徑下的 txt 文件中出現了日誌記錄

這裏我們看到有一個 appLogger,

這是日誌的名稱,通過 logger.name 可以設置此名稱,如:

app.logger.name="appLogger"

詳情可參考官方文檔:https://docs.python.org/3/library/logging.html#logger-objects

3 Flask 獲取用戶 IP

from flask import Flask,request
import logging

app = Flask(__name__)
#黑名單--對日誌進行分析,查看異常 ip

blacklist = ['127.0.0.1']

@app.route('/')
def hello_world():
    ip = request.remote_addr

    if ip in blacklist:
        return '你是個爬蟲,已將您的 ip 加入黑名單!' 
    else:
        return 'Hello World!'

if __name__ == '__main__':
    app.run()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章