一日一技:8行炫技代码,知识点多得不得了
我们今天来看一段炫技代码。它可以把任何能接收两个参数的函数定义成一个特殊的运算符。
我们今天来看一段炫技代码。它可以把任何能接收两个参数的函数定义成一个特殊的运算符。
在以前的公众号中,我提到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版本,没有提供直接在浏览器中导入的版本怎么办?
假设有这样一个场景,你接了一个私活,帮别人做一个软件,软件没有联网功能。东西做好以后,客户还没有给钱,说要先试用一下。你选择了相信客户,把软件发送给了他。然后他就把你拉黑了。
今天这篇文章,是我今天(1月16日)知识星球直播的概要。详细内容,大家可以观看直播回放视频。已经在知识星球的同学,直接点击连接就能查看回放。尚未加入星球的同学,请在一周后,到我的B站上观看视频。
在写爬虫的过程中,我们经常需要解析网站的列表页。
在我的爬虫书中,讲到了使用 Charles 或者 MitmProxy 实现中间人攻击,从而绕过反爬虫机制的方法。但这两种方法都需要安装根证书。
今天,我们来试一试在 Puppeteer 中,使用中间人攻击,攻击目标是我们自己,来绕过反爬虫机制。
我们知道,iPhone之间,iPhone和macOS之间是可以一键分享Wi-Fi密码的。只要有一台手机连了Wi-Fi,那么当第二台手机要连Wi-Fi的时候,只要第一台手机在旁边,就会自动弹出一个是否分享Wi-Fi密码的提示,从而一键分享。
我的macOS两年前连过父母家的Wi-Fi。后来又通过它的分享功能让iPhone也连上了Wi-Fi。所以两年过去了,Wi-Fi密码早就忘记了。
现在,我想让一台安卓手机连上这个Wi-Fi应该怎么办呢?
在以前的文章里面,我给大家介绍了使用Python自带的LRU缓存实现带有过期时间的缓存:一日一技:实现有过期时间的LRU缓存。也讲过倒排索引:使用倒排索引极速提高字符串搜索效率。但这些代码对初学者来说比较难,写起来可能会出错。
实际上,这些功能其实都可以使用Redis来实现,而且每个功能只需要1分钟就能做出来。全文搜索功能在搜索英文的时候,甚至可以智能识别拼写错误的问题。