反爬虫判断方法

1 最简单的网站反爬虫方法----根据 User-Agent 判断是否是爬虫

1.新建一个 Flask 项目

反爬虫判断方法_第1张图片

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张图片

(2)使用爬虫程序进行验证
新建 spider.py 文件,输入如下代码:

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

然后,运行当前程序,输出结果如下 :

反爬虫判断方法_第3张图片

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 设置的是日志的记录文件(注意设置文件夹的权限),后一个参数设置了日志的打印格式。格式化中的常用参数如下:

反爬虫判断方法_第4张图片

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

 

你可能感兴趣的:(爬虫)