不走弯路的Docker入门
保证你看完这个视频,就能使用 Docker。
保证你看完这个视频,就能使用 Docker。
关注我公众号的同学都知道,我非常喜欢FastAPI这个web框架。它在易用性上面做到了极致,帮助开发者减少了很多不必要的工作。
FastAPI的开发组织叫做tiangolo
,他家除了FastAPI外,还有另一个项目也非常好用,叫做typer
。
三年前,我写过一篇文章一日一技:快速实现Python 命令行参数介绍另一个命令行工具fire. 而typer
做得比fire还要好。
我们知道,Python 的第三方库一般是托管到 Pypi 上面的,使用 pip
命令进行安装。而 Golang 很多第三方库是托管在 Github 上面的,使用 go get
进行安装。
有时候,我们会发现一个很奇怪的现象,很多 Golang 的项目,在引用自己项目里面的包的时候,竟然用的是 Github 上面的地址。
在昨天的文章《一日一技:反爬虫的极致手段,几行代码直接炸了爬虫服务器》中,我讲到了后端如何使用gzip返回极高压缩率的文件,从而瞬间卡死爬虫。
大家都知道我的公众号风格,要得罪讨好就两边一起得罪讨好。昨天我帮了后端,今天我就帮帮爬虫。作为爬虫,如何避免踩中gzip炸弹?
最直接的方法,就是把你的爬虫隐藏起来,因为gzip炸弹只能在发现了爬虫以后使用,否则就会影响到正常用户。只要你的爬虫让网站无法发现,那么自然就不会踩中炸弹。
如果你没有把握隐藏爬虫,那么,请继续往下看。
我们今天来看一段炫技代码。它可以把任何能接收两个参数的函数定义成一个特殊的运算符。
在以前的公众号中,我提到Selenium/Puppeteer/Pyppeteer有很多特征可以被网站检测到。于是,有些同学想到了另一个方法,就是自己写一个Chrome插件,在网站打开的时候,注入到页面中,然后通过这个注入的JavaScript代码来操作页面,获取数据。
这个方法理论上说是万能的,因为注入的JavaScript能够获取当前Dom树,任何接口签名都无法拦截到自己注入的JavaScript代码,如下图所示:
我们知道,Python的第三方库一般可以使用pip来安装。如果代码比较简单,我们甚至可以把第三方库的代码复制下来,放到项目里面导入。
但由于JavaScript生态里面,有Node.js这个东西,这就导致第三方库有两种不同的导入方式。如果我们要做一个网站,我们通常会在HTML中,使用<script>
标签引入.js文件,例如:
1 | <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script> |
这样导入了.js文件以后,里面的代码在网页加载完成后就会运行。
但在Node.js生态里面,第三方包一般需要使用npm
安装,然后在代码里面通过require
导入。最后再用webpack打包编译成能直接在浏览器中运行的JavaScript代码。
如果我找到一个第三方的包,它只提供了npm版本,没有提供直接在浏览器中导入的版本怎么办?