最近有朋友问我,qcc 网站做了一次反爬措施,要如何破解。
分析
我抓包大致看了下,该模块下的请求为 ajax
请求,并且每次请求都会带上一个疑似身份验证的请求头,长这个样子:
首先搜索网页 html
源码,无法得知该信息从何来,前面的请求也没有带,基本上可以断定是 js
动态生成并带上请求头,和后端交互的。
yokon's blog
最近有朋友问我,qcc 网站做了一次反爬措施,要如何破解。
我抓包大致看了下,该模块下的请求为 ajax
请求,并且每次请求都会带上一个疑似身份验证的请求头,长这个样子:
首先搜索网页 html
源码,无法得知该信息从何来,前面的请求也没有带,基本上可以断定是 js
动态生成并带上请求头,和后端交互的。
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎,他设计的目的就是要加强程序员写代码的开发环境和应用部署的生产环境的一致性,降低开发环境的代码在生产环境无法正常执行的风险。推荐阅读HERE
Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统可以使用这套脚本安装:
......最近我用了两个星期读完了刘慈欣的三体三部曲,《地球往事》、《黑暗森林》、《死神永生》。因为是科幻小说,作者从上帝视角,以宏大的时间跨度,去叙述两个文明在宇宙中为了生存,付诸的努力。本文尽量不叙述小说的剧情。
......上一篇文章中,解决*RuntimeError: Working outside of application context.*错误,使用手动将应用上下文推入栈中:
ctx = app.app_context()
ctx.push()
print(current_app.name)
ctx.pop()
而 flask 文档中给我们的解决代码是:
with app.app_context():
print(current_app.name)
它使用了python
的with
语句,使得代码更加简洁。
with语句的关键是需要实现__enter__
和__exit__
类方法,来看一下 flask 的AppContext
类的实现: