diff --git a/app/__pycache__/routes.cpython-36.pyc b/app/__pycache__/routes.cpython-36.pyc index f0b5d96ec19a82232d8f9ceb84d1604a20eab76d..3da1eece82e524a1cd9460a01f52a54b0b6abfb1 100644 Binary files a/app/__pycache__/routes.cpython-36.pyc and b/app/__pycache__/routes.cpython-36.pyc differ diff --git a/app/antispider/__pycache__/index.cpython-36.pyc b/app/antispider/__pycache__/index.cpython-36.pyc index 71797267feb6cf50d4378d1a732c2b5da856556c..f661da07d2de27b3d02ea4852e4f951723769710 100644 Binary files a/app/antispider/__pycache__/index.cpython-36.pyc and b/app/antispider/__pycache__/index.cpython-36.pyc differ diff --git a/app/antispider/index.py b/app/antispider/index.py index 3259ddf90fa7eb2c480b05b9c3b6dfde001af515..acf7c712ac3ba8212dd66a5476a63df446a11fc6 100644 --- a/app/antispider/index.py +++ b/app/antispider/index.py @@ -12,7 +12,7 @@ def before_request(): # 允许请求通过 return None else: - return "错误请求",403 + return "错误请求", 403 @antispider.route('/show') @@ -23,3 +23,13 @@ def index(): @antispider.route('/error403') def error403(): return "缺少关键参数", 403 + + +@antispider.route('/cookie_demo') +def cookie_demo(): + if 'story' in request.cookies: + # 如果存在 'story' cookie,则执行相应操作 + # ... + return render_template("antispider/cookie_demo.html") + else: + return "没有权限", 403 diff --git a/app/routes.py b/app/routes.py index 6a74a187a31db929f96df742c47f8be362a0c485..55266bf5d494b6ec2f9614aff605d974e0a6b172 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,5 +1,6 @@ -from flask import render_template +from flask import render_template,make_response from app import app +import hashlib """ 首页相关路由配置 @@ -11,7 +12,15 @@ def index(): item = { "msg": "后台传递信息" } - return render_template('index.html', title="梦想橡皮擦", item=item) + # 访问首页生成一个 Cookie 值,该值用于访问特定页面 + rendered_template = render_template('index.html', title='梦想橡皮擦') + resp = make_response(rendered_template) + text = "梦想橡皮擦" + + # 使用 sha256 算法进行加密 + encrypted_text = hashlib.sha256(text.encode()).hexdigest() + resp.set_cookie('story', encrypted_text) + return resp @app.route('/bt') diff --git a/app/templates/antispider/cookie_demo.html b/app/templates/antispider/cookie_demo.html new file mode 100644 index 0000000000000000000000000000000000000000..c1659ab26b887735d02a0303b3a3ca5de266bbdc --- /dev/null +++ b/app/templates/antispider/cookie_demo.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} +{% block content %} +

这是一个关于边界的故事。

+

边界是一个古老的城镇,位于一座山谷之中。它是一个安静而美丽的地方,居民们都很友好,生活在和谐中。

+

然而,这种平静并不能持久。有一天,一群强盗来到了边界,他们想抢劫和掠夺城镇里的财物。

+

城镇的居民们很害怕,他们不知道该怎么办。但是,有一个年轻的男孩,他叫纳特尔。纳特尔是一个勇敢和有见识的人,他决定与强盗作斗争。

+

纳特尔开始计划如何抵抗强盗。他和其他年轻人一起练习武术,并且招募了一些勇敢的城镇居民来加入他的团队。

+

当强盗来到城镇的时候,纳特尔和他的团队准备迎战。他们用他们所学的武术技巧和勇气抵抗强盗,最终成功击退了他们。

+

边界的居民们感到非常感激,他们决定把纳特尔当作他们的英雄。从此以后,纳特尔成为了边界的领导者,带领着城镇的居民度过了许多平静的日子。

+

边界再也没有遇到过强盗的威胁,因为纳特尔和他的团队

+

继续保护着城镇。他们成为了边界最强大的保护者,并且为了维护和平,他们还和周围的城镇建立了联盟,共同应对任何威胁。

+

纳特尔也成为了一个很受尊敬的领导者,因为他不仅是一个勇敢的战士,还是一个关心和爱护城镇居民的人。他每天都会和居民们交流,了解他们的需求,并且致力于改善他们的生活。

+

边界成为了一个幸福而和平的地方,所有的居民都感到自豪和幸福。他们知道,有纳特尔在,他们就不用担心任何威胁。

+

这就是纳特尔如何成为边界的英雄,带领着城镇度过了许多幸福的日子。他将永远被边界的居民所铭记。

+ +
+{% endblock %} \ No newline at end of file diff --git a/app/templates/common/header.html b/app/templates/common/header.html index 5b8e8a0ebffe8d013bf96e0f4bc73036d24d76e1..b8763f6ef7c7275c58ef365c7ec474b0634851e7 100644 --- a/app/templates/common/header.html +++ b/app/templates/common/header.html @@ -2,7 +2,7 @@ {% if title%} -{{title}} | 爬虫训练场,让天下没有失效的爬虫 +爬虫训练场 | {{title}} ,让天下没有失效的爬虫 {% else %} 爬虫训练场,让天下没有失效的爬虫 {%endif%} diff --git a/app/templates/index.html b/app/templates/index.html index 1f1750b0aead40f02f0581ec91e6abf2810ed0c1..463edb278a005ea0f5af4f27d026b27037260ccb 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -1,8 +1,8 @@ {% extends "base.html" %} {% block content %}
- - 爬虫训练场项目 正在建设中~ + + 爬虫训练场项目 正在建设中~

普通爬虫

@@ -34,9 +34,7 @@

分页爬虫

-
最新更新 -
+

本案例是由 2760 条数据组成的分页爬虫,数据为国内学校清单,主要用于练习分页数据采集。

@@ -103,10 +101,13 @@

PC端反爬


-
+

UA 参数反爬

+
最新更新 +

该案例要求爬虫程序构造请求头的时候,必须携带 User-Agent 参数,否则会返回403错误。

@@ -123,11 +124,32 @@
-
+
+
+
+

定值 Cookie 反爬

+
最新更新 +
+
+
+

该案例要求爬虫程序的请求头携带固定Cookie值,如果缺少无法访问。

+

难度:⭐

+

+ 案例: + 边界故事 +

+
+ + 学习博客 +
+
+
+
+
{% endblock %}