惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
小众软件
小众软件
S
SegmentFault 最新的问题
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
C
Check Point Blog
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
罗磊的独立博客
有赞技术团队
有赞技术团队
V
V2EX
Y
Y Combinator Blog
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
W
WeLiveSecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
S
Security @ Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
MyScale Blog
MyScale Blog
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
www.infosecurity-magazine.com
www.infosecurity-magazine.com
PCI Perspectives
PCI Perspectives
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Security Latest
Security Latest
AWS News Blog
AWS News Blog
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
博客园 - Franky
Cisco Talos Blog
Cisco Talos Blog
T
Threat Research - Cisco Blogs
M
MIT News - Artificial intelligence
T
Troy Hunt's Blog
N
News and Events Feed by Topic
Cloudbric
Cloudbric
Scott Helme
Scott Helme
云风的 BLOG
云风的 BLOG
Attack and Defense Labs
Attack and Defense Labs

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
如果你不知道做什么,那就学一门杂学吧 - 少数派
2018-10-08 · via 少数派

序言

这篇文章没有代码,请放心阅读。

多年以后,面对人工智能研究员那混乱不堪的代码,我会想起第一次和S君相见的那个遥远的下午。那时的B公司,还是一个仅有6个人的小团队,Mac和显示器在桌上依次排开,大家坐在一起,不需要称呼姓名,转过脸去,对方就知道你在和他说话。一切看起来都那么美好,我们所有人,都希望自己和这个公司能够一起成长。

彼时S君刚从加拿大回来,老板把他介绍给我们,于是S君作为数据产品经理跟我有了项目上的接触。

创业公司里面,每一个人都需要会很多的技艺,于是S君开始自学Python。

有一天,S君问我:“你玩MineCraft吗?“

“玩,但我更喜欢在B站上看别人的世界。”我答道。

“我觉得我现在写程序,像是在玩我的世界。”S君笑着说道。

“是不是觉得你已经掌握了Python的基本语法,看着别人把Python用的溜溜转,而你自己却不知道用它来做什么?”

“是这样的,你懂我。”

“那你学一门杂学吧。”

于是S君被我诱拐过来跟我一起写爬虫。

后来,S君离开了B公司。

三个月后,我也离开了。

从此,我们再也没有见过。

编程最重要的能力是变通

S君是一个老实孩子。

在开发一个爬虫的过程中,网站接口返回给他的数据看起来是JSON格式,于是他就用Python自带的JSON库去解析。结果解析失败了。因为这些所谓的看起来像JSON的东西,竟然没有双引号。

难道是JSON的超集?S君一通搜索,发现用YMAL库也许可以解析这种数据。于是安装YMAL库,一解析又报错。

难道这些数据直接就是Python的字典?于是S君用上了邪恶的eval。又报错,因为里面有null和小写的true。

“你为什么不试一试直接用正则表达式呢?”我对S君说。

“靠!”S君一拍桌子,旁边的老板吓得把搪瓷杯子里面的快乐水洒在了白衬衣上。

然后S君用正则表达式花了10秒钟结束了战斗。

写爬虫与三峡大坝

有一天,S君兴冲冲地跑来跟我说:“我体会到三峡大坝的伟大功能了!”

“你是爬虫工程师还是水利工程师?”

“你知道吗,不管上游的水势多么凶猛,从大坝出来以后总是安全而稳定。”S君并没有回答我的问题,而是自顾自地说道。

“原来你开始用Kafka。不错,孺子可教。”

S君吐了一下舌头:“还是师傅教导有方。”

前不久,S君的爬虫刚刚达到了日产数据千万条的目标。然而他只高兴了一天。因为他发现,数据写到数据库以后,读起来很麻烦。

S君有多个数据分析的系统需要从数据库里面读取爬虫爬好的数据,但是从每天千万量级的数据中寻找特定的数据是一个很慢的过程。如果程序遇到异常导致崩溃,又得从头开始读。

S君问我:“现在我每一个数据分析的脚本都要从数据库里面读一次数据,做了太多重复的工作,单机单节点的数据库快要撑不住了。我是不是要去学习分库分表搭建集群啊?”

我告诉S君:“这个后面你自然是需要去做的。但现在,你可以先试一试Kafka,我已经搭建好了一个Kafka的集群了,你这样使用……”。

后来,S君让所有爬虫把爬到的数据到直接送进了Kafka,然后再从Kafka里面读数据出来,一个Group用来备份原始数据,一份Group用来生成中间表,一份Group用来监控报警,一份Group用来绘制DashBoard。无论爬虫塞给Kafka的数据有多少,有多快,从Kafka读数据的地方都能按照自己的节奏来消费和使用。

既然收集了数据就要让它发光发热

S君在加拿大留学时学的专业是金融数学和统计。所以他对数据分析也很有兴趣。在他爬虫收集的数据够用以后,我跟他讲了如何使用Pandas来分析数据。

S君把他分析的酒店价格变化数据给分享给了我们。不愧是金融+数学+统计学背景的高级知识分子 + 超级强大的Pandas + 超级好用的Jupyter。这份数据不仅完美再现了过去一年的价格走势,还预测了未来的任何变化,多达四十六张图表似乎穷尽了所有的组合。

草木竹石皆可破敌

S君曾经遇到过一个特别简单的电商网站。页面几乎像素级抄袭淘宝,但是完全没有任何反爬虫的机制。以S君的水平,从审查元素,到开发完成,仅仅用了半个小时。爬虫安全平稳又顺利地运行了三个星期。

然后,有一天早上,爬虫死掉了。

S君用尽毕生所学,无法再从这个网站上爬到任何有价值的信息。这个网站似乎请来了一个机器行为对抗的大神级人物。人用浏览器一点问题都没有,但S君的任何隐藏爬虫的手段都被轻易识破。

S君找到我:“师傅,这个网站我搞不定。”

“你能搞定。动动脑子。”

“我会的所有技术都用上了,完全看不出破解他反爬虫机制的方法。”S君已经失去了信心。

“那就,不要用技术去对抗。用你的脑子。”

S君抱着显示器用头一遍一遍的撞。

我问S君:“你有没有思考一个问题,这个网站模仿了淘宝的皮,却又毫无反爬虫机制。你觉得他的老板是一个什么样的人?你听过那个段子吗?”

S君突然一跃而起:“我给你一万元,你帮我做一个网站吧。你想要什么样的网站?很简单,就淘宝那样的。你是说这个段子吗?”

“对。”

S君突然之间荣光焕发:“有办法了!”

只见S君重新在浏览器打开了这个网站,找到了客户服务热线。电话一拨通他就开始一通污言秽语骂起来:“……你们网站到底在搞什么?为什么今天一会能登录一会不能登录?找你们老板来!我来教他怎么做网站!……”

半小时以后,网站反爬虫机制全部解除。

此刻,S君面向西面双手合十,自言自语:“兄弟,对不起了,只有让你来背这个锅了。”

你小学上课传过纸条吗

“我现在能体会那些半路拦截纸条的人是什么心态了。”这是S君第一次使用Charles时对我说的话。

从此以后,我很少看到S君分析网页了。因为他学会了在爬虫开发的过程中,首先通过中间人攻击技术分析微信小程序和手机App。这种方式往往能够直接获得数据,拿到数据以后就能直接储存,再也不用写烦人的XPath或者长的跟表情符号一样的正则表达式了。

有一天,我在玩一个网页版的黑客解密游戏,在网页上寻找某个地方隐藏起来的密码,然后输入每一关的回答框中,答对才能进入下一关。

游戏有12关,而我卡在了第6关。只见S君拿着电脑走到我面前,指着第12关的通关页面跟我炫耀。

“你是不是用MITMProxy替换了这个网站的Js文件?”

“果然还是瞒不过师傅你啊。”

“你拦截了别人的纸条,做了修改,然后又叠好继续传下去,你有考虑过发纸条的人和收纸条的人的感受吗?”

“我小学时候不传纸条,都是妹子直接约我的。”

加密?不存在的

“前端没有秘密”。S君在成功逆向了一个网站的Js文件以后如是对我说。

“那是因为这个网站的Js代码就赤裸裸地放在你面前,完全没有混淆。”我对S君说道。

“不怕,我可以用Node.js来运行混淆过的代码。我已经搭建好Node.js服务了,只要把Js代码传进去,他就会把结果给我返回回来。”S君对此似乎一脸自行。

“你什么时候学会的Node.js?”

“这不是师傅你说过技多不压身吗?既然做爬虫需要动JavaScript,那我顺手就把Node.js给学了。”S君毫不畏惧的表情,似乎证明他已经猜透了我要问什么。

“那如果目标没有网站,只有App呢?”

“不怕,Android 逆向工程我也顺便研究了一点。Java我也看得懂。”

“看来这些已经不需要我再教你了。”

我一根指头就能捏死你,但我不想伤害你

S君有一天问我:“假设你现在在小学课堂上,前面的同学让你把纸条传给后面的女生,你会怎么做?”

我说:“查看复制/修改删除/拦截丢弃”。

S君嘿嘿一笑:“比如说,前后三次的纸条分别为‘听说你奶奶生病了,我们周末一起去看望她吧‘,’今晚我爸妈不在,去我家玩吗?’, ‘我刚拿到这个月压岁钱,老师一下课我们就去吃好吃的。’”

我说:“女孩漂亮的话,我改一下第二张纸条,改成‘今晚我爸妈不在,我们一起去青南家玩吗?’”。

S君露出了嫌弃的眼神:“师傅,你可是说过你最讨厌技术含量低的事情啊,你涂改了纸条,别人不会发现?你笔迹都不一样啊!”。

我问S君:“那你有何高见?”

S君抬头仰望这窗外的天空:“如果是我,那么我会临摹第一张纸条上面的生病了 去看望 ,第二张纸条上面的爸妈,第三张纸条上面的 老师这些字的笔迹。然后改换一下顺序就变成了:爸妈,我老师生病了,我拿钱去看望她。最后我把这张伪造的纸条拿去找写纸条的那个同学他爸妈要钱。”

“我猜,你想用中间人攻击截取别人的Cookies,然后用这些Cookies偷偷登录网站,进行你的不可告人的目的。”

S君笑道:“哈哈哈,我想想都害怕。但是每当我想到,我拥有一种可怕的力量,而我还能控制住这种力量。我就知道我和街上的普通人不一样了。”

你肯定薅了直播答题的羊毛吧

去年年底的直播答题着实火了一把。那个时候,我和S君分开已经有一段时间了。我相信,在全民答题的每一个夜晚,S君的电脑上一定连着不少于六台安卓手机。这些手机运行着不同的答题平台,能够自动读取屏幕上的问题并自动选择答案。

我把安卓自动化测试技术教给S君,本来是让他结合爬虫,实现群控从而抓取一些难以处理的数据,但我相信他肯定会用来答题。

变通,这一点他学的越来越好了。

只希望他不要成为羊毛党。

后记

后来,我再也没有见过S君这样有趣的人。所以我把我教给S君的东西,写成了一本书:《Python爬虫开发 从入门到实战》,现在已在京东,当当与亚马逊上架。希望你也能变成S君一样有趣而又厉害的人。

爬虫是一门杂学。因为在一个完整的开发过程中,需要涉及到的知识可以包括但不限于:Python,HTML,JavaScript,正则表达式,XPath,数据库,Redis,消息队列,Docker,ELK,Hadoop,数据分析,ETL,中间人攻击,自动化测试技术,可视化……

这其中的任何一项,在一个大公司里面都可以让很多人来做。

爬虫开发,就像这篇文章里面反复出现的一个词:变通——只要能够获得数据,任何技术都可以使用。所谓草木竹石皆可为剑。爬虫不应该是一个枯燥的一成不变的模式化的工作。而是一个充满了创意和挑战,能够让旁观者大呼“我X还能这样搞”的工作。

爬虫开发,绝对不仅仅是Scrapy,PySpider,requests这些框架或者库的使用。所以在这本书里面,我也刻意减少了框架使用说明的部分,而把重点放在了各种突破反爬虫机制或者使用变通的方法绕过反爬虫机制的方法论和实践中。

通过学习爬虫,你最后不一定选择爬虫工程师这个岗位,但是在学习爬虫的过程中,你将会接触到的各种工具,方法,服务组件,都会在你以后的生活和工作中帮到你,让你知道,在遇到一个问题的时候,解决方法在哪个地方。

本书读者交流群现已开启,扫码添加公众号,回复:读者交流 即可获得加群方式。

null