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()