阅读视图

发现新文章,点击刷新页面。
🔲 ☆

你得先学会生活 Chat with PY

时间:2026年4月7日

地点:青羊宫茶园

拜师时,老师说,你得先学会生活。当他请教老师教一些法门时,老师面露难色,你这样太刻意了,不好。

“越来越多科研的一些局部流程,还有整体的闭环都可以用AI”,可以从“原来比较狭窄的一些科学问题,扩大到非常丰富的科学问题上”,“对于很多人来说,AI,尤其是AGI的技术,也会进一步扩散到很多有基本科研素养的人的手里,使得很多不是科班的,或者不是这个专业的,都可以去做广义的research。”

“有一个案例,有一个人养的狗身上长了好几个肿瘤,他就跟AI去聊,想到了用mRNA编辑去给狗打针对性的疫苗,他研究出一个治疗方案,刚好一个实验室去承接,就给他做了个性化的疫苗,然后就把狗的癌症遏制住了,就是这两个月的事,一年两年前的AI可能局限在去看一些片子,但现在因为有更多的生命数据,或者更个性化的一些数据,结合更强大的AI,就可以形成非常多的解决方案。”“相当于,每个人都能成为一个黑客,可以成为科学黑客,进一步结合自己生命、生理性的数据,基因层的数据,还有记录性的数据过程,互动性的数据,关系型的记录,就可以成为自己生命的,life的黑客了。”

但其实在这里,我感觉到的,是心的重要性,心更加重要了,而不是黑客的过程或结果。

“成都的朋友说,他小时候成都的夏天一点都不热的,因为盆地有足量的水,每天蒸腾到天上去,水走不掉,晚上再下回来,他说小时候夏天晚上经常睡不着觉的,每天晚上都是暴雨,打雷的那种暴雨,现在还是缺水,很明显缺水,水质也一般般。”

“我觉得很有趣,很多都是来了成都之后才知道这些事情的,你不来,这些信息会离你很远,你如果不在,是完全看不见的。”

“上周有朋友过来,开年会,非要让我带她去人民公园,主要去看相亲角,我以为没啥意思,然后就看进去了,男的1600多,女的1600多,全公益的,信息就全挂在那儿”,“这是大数据啊,成都的平均薪资,国有企业上班赚多少钱,私有企业上班赚多少钱,工程师赚多少钱,平均薪资,哪些岗位挣钱多,全有了。”当然有钱有背景的,还有高端装备的工程师,成飞啥的肯定不用在这相亲哈哈。

(玄学,我的理解就是)“给一个外力,让这个人改变”,(反者道之动),“习惯、行为改变了,思考方式变了,人就变了”

“投资人的世界,有自己的一套语言系统和理解的系统,很多细分领域都是这样,创业做公司,公司治理时是一个结构,对外去跟投资人聊,是另外一个结构,投资人日常看的领域不同,他的思考角度和起手也就不一样,他下最终投资决定的那个关键的东西,也是不一样的。”“做企业就只能自己去一个一个试,可能要做一些针对性的调整,应对不同场合。这是现实中复杂的地方。”“所以都说,要找理念契合的投资方,这样的钱,这样他才能陪你更长时间。”

“你想把投资人从他的那个语言体系里面拉出来,该用你的方式思考是不可能的,只有极少数的投资人能做到。”

“比如选择to B还是to C,就是完全两种路线,等于是在决定你要讲哪种语言,决定你是学韩语,还是学意大利语,完全两种语言,两种体系。”

“很多时候你的客户是个黑盒,你需要做实验才能了解他们。人就是这么成长的,你不犯错的话,是不可能成长的。没有经过实验和失败就没有判断力。自己的判断力一定是跟特别具身的线索相关的。”

“Andrej Karpathy的博客就讲过,他自己做自己的实验,跑在自己的服务器上,让AI在解决新问题的时候,去调用已经有的成功结果,去复用,他的这个分享非常值得学习的,每个人都是这样,这样做自己的实验,因为每个人的目的不同,每个人的感知不同,依照自己的感知去做实验,然后把实验结果自己记录好,后面把它们拼凑在一起,形成一个更大的模型,去做想做其他东西,因为不可能所有人解决问题都是用同一套解决方案,对吧?每个人都有不同的方案,但前提是你对所有的模块都很了解,这样组合起来才有芒格说的那个Lollapalooza效应。”

“每个人都有,一定有,但问题是很多人从来没有积累过、记录过。”

“前阵子我才明白很多卖茶的地方怎么赚钱,为什么能一直在一个地方待着不动,其实他们每年都有段时间不见人的,出去找茶的。前两周有春糖会,四川有全国70%以上的白酒产量嘛,这个春糖会规模大,要开十天,前几年更火,春糖会期间酒店都是大涨价的,订不到房间的,这么贵还要来成都参加这个展会,说明是必须来,关乎到赚钱的,可能一个展会下来,一年的酒就卖光了,就是这个意思。”

“关键是不同批次的酒,不同地方的酒,味道不一样的,要用这十天来找自己的客户的,茅台不用,茅台只参加最后几天的展会,前几天的酒店展会茅台不参加,为啥,因为他不愁卖嘛,酒啊茶啊,这些都是非标品,原料、环境、气候都会有影响,最终你是要来给非标品找买主的,时间短了肯定不行,必须要尝的,要思考后再决定的,遇到了合适的买主,一个批次就会被人全买走。前几天我老丈人跟我说,他在大连嘛,有那种卖散酒的店,店里好几缸大酒坛子,正常卖肯定一年都卖不掉,但后来突然有一天,他发现有一个缸空了。人家就是这样赚钱的,一年的钱都赚完了,这是一种商业模式。”

“但他要知道他的客户喜欢什么,然后去找那种酒或茶就可以了,两边都要知道怎么卖掉,谁可能会买。非标产品就得找非标的大客户。”

“有个以前的同事后来做字画生意的,也是每年去找画家看画,看好的就一次性买下全部库存,然后帮画家做推广。”

“他就独占这个稀缺性。”

“这不就是股权投资吗?刚才说的,跟创始人要遇到那个合适的投资方是一样的,融资谈了一年,但谈到了一个合适的,他会跟你一起,跟你一起未来的承担风险。”“不过跟卖酒还是不一样,他是一次性的,属于一个销售和贸易行为,股权投资是属于合作性的,因为我给你投资,我还帮你分担风险,这风险本来是全在你身上的,但我投了钱进来,就有风险转到了我身上,你就相当于把风险零售了,零售给别人了。”

“其实相当于你讲了一个故事,他投资参与到了这个故事里面,成了一个参与者。买单了你这个故事。然后你的故事发展的好与坏,反过来也决定了他自己这个钱的未来。”

“我感觉现在AI的下半场都在用认知科学的东西。”

“AI输出的内容,它是外化的一个东西,它在试图让你理解一个东西,但是它是另外一套东西,它仍然没有本体性。”

“但我觉得你看个人在用这些东西的时候,其实就是在实践认知科学。机器的强大,更加彰显出来人的局限性,或者人的思考能力有一些边界,你得顺应它,你得省着点用,你得珍惜它。”

“但人有很多灵性的东西,就是很难用语言形容出来的东西,是很微妙的。你可以用认知科学的东西去类比这些东西,但是没有办法完全表达出来,我就感觉现在去读一些小说呀,诗歌啊,都反而比以前更有价值。”

“比如真实的,拍纪录片,拍比如宫保鸡丁怎么做的,很早以前很多纪录片的导演就在讨论这件事情,这个东西是最值得记录的,为什么没有人去记录。一道菜到底怎么做,可能能录1000种做法,但它能反映出每个人的不同特质。这会很奇妙。这是过程的记录。”

“对,我们做茶,我就发现不同的道士,青城山上的,他们都各有一套,包括采叶的方式,清明那几天不能吃肉啊,还有不能化妆,这都是前人的实验,实验下来的结果。”

“是啊,所以所有已然存在的东西,每一个都那么有意思。”

“我家楼下那些鸟,我觉得性格都差别很大的,有的鸟我都能认出来,就是你要长期地看它啊。你得投入大量的时间精力,一些面貌才能呈现出来,甚至可能是从来没有人记录过的东西,可能有古人做过,但没记录过。”

“群体层面的分布也就是钟形曲线,个体尺度的发育过程也就是前额叶成熟峰值,横向看人是分布,纵向看人是轨迹,但AI让这种原始的分布出现了松动,越来越多的人得以跳出这个原始分布了,成为life hacker,nature hacker。”“原来我们可能是个非常非常陡峭的分布,现在呢,可能一方面它更陡峭了,峰值可以更高,但另一方面,它腰部的这一部分人,从规模上和多样性上来说也会越来越丰富。”

“我最早跟一个朋友总聊,就说AI最好的一点,就是它是作为黑盒子的大模型来说,最好的一点是,它里面暗含了所有的方向,所有的向量,就跟易经一样,所有的方向上都有分布,所有的信息都在里面,之前大家会讨论,怎么问出一个好问题,现在讨论这件事的人变得少了很多,但这永远是最重要的,就是所有的向量都在里面,你怎么把那个方向提炼出来。”

说到这里其实很像在图书馆里找书,找到一本就可以找到一片。

“随机性的那部分,更多是在我的身体里,在我的脑子里,随机性以外的东西,我可以从那里面提取出一些东西来。”

“AI只能判断你现在的向量方向,但他没有办法去收集你的所有向量,你的丰富度是难以想象的。” “这样你才能跟AI等量齐观。”

“人的多样性还是很美妙的。大家在这种工具的辅助下,就可以在一些方向,个性化的方向上,或者跟自己的场景,跟自己的上下文,跟灵感和随意性密切结合的方向上,可以走的特别特别远。不要把人的多样性给锁死。人需要在生活里看到更多的关系,在自然里看见更多的关系。”

“你刚才提到有一个感触就是怎么让人更自由,其实人还是要站在地上的,但是大模型是一个二层楼,意思就是人已经蹦不上去了,爬也爬不上去了,它确实比人高,但人可以上去。仅仅二层楼,就已经可以让平地上的人看到不一样的风景和视角,反过来会影响人的未来。AGI呢,可能是一栋非常高的这种摩天大厦,人就可以看到全景的东西,或者接近全景的东西。反过来你还是可以随时在地面或二楼的,甚至是各层之间去切换,并不是说我就要一直站在楼顶,我的感觉。”

“去过那个大楼顶端就可以了,但是去过,有过这样的高峰体验之后,反过来是可以让人在地面生活得更好的。”

“未来可以带着创造性去生活,当你有无数个可能都可以做的时候,你去做哪个,其实就是人的选择。”

“你看我们都属于从最早开始玩儿AI的嘛,现在慢慢已经到了一个新的阶段了,做了好多年实验了,我们在想的东西跟别人就真的很不一样。很多人可能现在才开始,一起步就是最好的模型,我们就变成了最原住民的那一波,怎么说,亲自体验和看了这个过程之后,反而做出的是跟别人不一样的决定,我觉得这个是很好的。现在很多人一入场就直接Claude牛逼就完事了,我们至少知道,再多问几个看看哈哈。不同时期开始用,这个思路还是很不一样的。“

“认知科学的角度也是这样嘛,是认知的一个锁定嘛。在它峰值期前面,在它最有开放度那个期间,它有些模糊的东西,有一些非常模糊的东西。”“他没有那么多选择,去走一条完全新的路,一个他不熟悉的路线。因为他从来没有走过另外一条路。他没有他没有体验过另外一个世界,这一点是非常重要的。”

“技术路线或者学术路线,在相当程度上就是被他过过往的经历,尤其是早期大脑发育,前额叶发育完毕之前那个阶段的经历决定的。”

“哈哈对,头盖骨闭合了,发育彻底停止了,后面就只能存玩存量了,然后你最多再玩5年,35岁就开始体能下降了。”

“所以AI很重要的一个作用就是,他其实无法一次性或者短时间内改变所有人,但是会让大批量的青少年能够在非常短的时间,感受到那个峰值的一个感觉。”

“但是人家小孩儿不是这么用AI的,哈哈,人家在谈恋爱!”


CHANGELOG

  • 20260416 Arlmy 整理、发布
🔲 ☆

腾讯突发“神仙操作”,4195个开源项目一夜归零!表面是打击外挂,实则是为了垄断AI时代的“数字石油”,你的聊天记录到底属于谁?|GitHub DMCA、WeChat、Tencent

腾讯向GitHub投诉,封闭了4,195个仓库,这到底是一个什么神仙操作?

大家好,欢迎收听老范讲故事的YouTube频道。

腾讯跑去向GitHub投诉,居然引用了数字千年版权法案,要求删除4,195个仓库。现在这些仓库基本上都已经被删掉了。所谓的数字千年版权法案,是1998年美国通过的版权法案。

社区反响:怎么轮到流氓报警了?

以前咱们都说腾讯四处抄袭,都说“狗日的腾讯”,怎么现在轮到流氓报警了?腾讯这次给出的理由,是这些项目以及项目的分支,违反了腾讯设立的安全围栏,获取了用户的聊天记录。

社区中骂声一片,主要观点如下:

  • 腾讯你自己的产品做的不好,用别人帮你把功能补上了,你还不乐意,你还来封堵。
  • 聊天记录本来就应该是属于客户的,并不是属于你腾讯的,你有什么权利替客户主张?
  • 有很多骗子和黑灰产,你腾讯你不去抓,和开发者和用户过不去,你到底想干嘛?

这个是社区里边普遍的声音。

事件时间线

  • 1月8号:腾讯向GitHub提出的投诉;
  • 1月12号:GitHub开始通知开发者删库;
  • 1月18日:面向大众的一些科技媒体开始报道这个事情,事情开始在各种社交媒体上爆发。

详解数字千年版权法 (DMCA)

咱们现在要讲一下数字千年版权法。这个法里头最常被引用的两个条款,一个是512条款,一个是1201条款。

1. 512条款:侵权与避风港原则

512条款叫侵权,他侵犯了我的版权,主要是针对平台和服务商的。有人上传了盗版侵权的内容,我要投诉他下架,主要干这个使的。

这个时候这些平台跟服务商就会去引用“避风港原则”,说这个事我不知道,我也查不过来,你向我投诉了,我就把它下架掉。这个基本原则叫“民不举官不究”。

咱们比如说吧,现在你想看什么美剧怎么办?上B站上去看。B站上每一次有新的美剧,都会给你放盗版的,等到有人投诉的时候,他再把这些东西删掉。他是这样的一个运作方式。这些平台方会在接到投诉以后,对内容进行下架,然后通知——就是谁上传的我要通知一下。如果有抗辩,说这东西不是盗版,我自这里有授权书,或者东西是我自己生成的,那么还是可以酌情给你恢复回来。

2. 1201条款:反规避条款

第二个条款经常被引用的,这一次腾讯所引用的叫1201条款,它叫反规避条款。任何违规者,以及提供规避工具的和服务的这些人,这是这个条款所去针对的。

这个条款的意思,就是你绕过了技术壁垒和保护,绕过了版权保护墙,获得了版权保护墙之后的这些信息。就是你提供技术、提供各种方法都不行,我们就可以去引用这个数字千年法案去投诉你。

GitHub 对“两用技术”的态度

这个里头有很多叫“两用技术”,就跟咱们讲这个两用物资似的,你既可以军用也可以民用。但是这里讲的两用技术是,既可以去做好事,也可以去做坏事的这些技术。

通常GitHub会默认开发者都是好人,只有证据扎实、影响巨大才会去处理。一般情况下,你说我这个项目放到GitHub上去以后,有人可能拿它去做坏事,GitHub通常是不会去管的。如果证据扎实、影响巨大的话,就会忽略做好事那部分,直接把库删掉。这一次腾讯就已经达到目的了。

哪些项目被干掉了?

大家注意,GitHub里面结构是这样的:每一个项目,我们要开一个仓库,把这些源代码都存在里头,存不同的版本。GitHub的仓库有两种,一种叫开放仓库,一种叫私有仓库。这一次主要针对的都是开放仓库。

这一次被干掉的,大部分叫fork项目,叫分支项目。什么意思?就是你有一个开放项目,说我可以从微信里边导这个聊天记录出来,别人看了不错,我也要去改,那我不会在你原来的项目上改,我会在你这个项目的基础上做一个分支,相当于是我在这个基础上做了一个拷贝的影子一样,然后我在这个分支上再去干活。所以它为什么有4,000多个仓库?大量的都是分支分出来的。有一些大家比较喜欢的项目,会有上百个分支出来。

主要被投诉的项目类型如下:

第一种:腾讯客户端 Hook

Hook是钩子的意思,就是我们来去监控腾讯客户端,在里边去做一些事情。它基本上是一个hook和机器人的架构,就是我先在这挂一钩子,发现有什么事的时候,我后边的一个自动程序就可以去处理。这种项目这一次都被投诉了。

第二种:运行进程导出 Key 及解密数据库

腾讯在微信里头,实际上是有一个数据库的,来存我们各种各样的聊天记录、联系人,还有我们在里边买东西存这些信息。要想解开这个数据库的密码,是必须要有一个动态的密码,或者叫动态的key。

这种东西只能去监控他的微信聊天的、微信程序的这个后台进程,然后从这个里边能够截取出这个key来。拿到这个key,就可以解开这个数据库,就可以知道你跟谁聊过什么天了。它是这样的一个工作原理。这一类的项目也统统都被投诉了。

第三种:聊天记录导出与备份

我们用手机的时候,有一个很痛苦的事情是什么?就是微信聊天数据特别特别大。像我每一次换手机的时候,那个我的微信聊天数据大概能有个十几个G或者更大一些。他又不在这个服务器端给你提供备份的这个功能,因为实在是备份不起。所以每一次换手机,备份或者叫迁移这个聊天记录是非常非常痛苦的。

那么有一些工具说“来我帮你做迁移吧”,我帮你把这个微信聊天记录通通都迁移到服务器上,或者迁移到你自己的一个网盘上,等你下一次有新手机或者有一些新的应用的时候,我们帮你再把这个东西复原上去。它有这样的工具,这一次也都被投诉了。

第四种:iOS 备份解析导出

我们的手机,特别iPhone手机,你连到Windows或者连到macOS的这个电脑上以后,它会把整个手机里边的信息做一个备份下来。这个备份里头,你如果把它拆开了,有一部分——或者说叫很大一部分吧——就是微信聊天记录。这一块也有人专门做了工具,说我来帮你把这个文件拆开了,我把微信聊天记录给你找出来。这个也被投诉了。

第五种:数据清理和分析类

像我们以前就是做清理大师嘛,就是做这种清理工具的。那你像微信这么多聊天记录里头,到底哪个能删、哪个不能删?我们是会有一套的办法去分析,说哪个数据是比较旧了,哪些是附件可以让它失效把它删掉,哪个是这个联系人的头像可以把它删掉。

你就想吧,你如果把联系人头像删了,会造成什么样的问题?如果这人你再也不见了也无所谓;如果你下次又需要跟这哥们聊天了,我们需要再去消耗你的流量,重新向微信服务器去申请这个头像去。你如果要清理微信聊天记录的话,首先要分析微信聊天记录的结构,哪些文件到底是存的什么东西,然后才能去删嘛。这一部分也通通都被腾讯投诉删库了。

就刚才我们讲的这些项目,大家听名字就能知道,基本上都是两用项目。它是有正规用途的,不是上来说我一定要窃取你的信息。

DMCA 1201 条款的典型案例

给大家举几个典型的数字千年版权法案1201条款的案例吧。

  • YouTube-dl (YouTube download):这个项目也被投诉过。它实际上是干嘛?就是从YouTube你拿链接以后,它把你这个视频给你down下来,离线下载到本地。这个肯定是违反了YouTube的使用规则的,这没什么好说的。它是谁投诉去了?美国唱片业协会跑去投诉去了。这个项目在下架之后,经过整改又重新上架了。
  • 任天堂破解程序:有人把怎么去破解Switch那个程序上传到DISCORD上去了。这个项目被任天堂投诉了以后,全部下架,没有再恢复。

GitHub主要的判断标准是绕过限制的这个技术手段是否被充分的证明了。说你是不是真的绕过这个技术手段了,你一定要把这个过程写的很清楚。

YouTube-dl的是通过了整改,它原来是在YouTube-dl那个源代码里头有一个测试用例……现在他把这测试用例改了,说我们就不再给大家演示这东西了,这个东西具体能干什么自己去猜去。它实际上功能都没有任何修改,用户依然可以自行使用去下载那些有版权的内容。只要是做到这一步,GitHub就允许它重新上架了。

为什么选在这个时间点?

腾讯这次的投诉还是非常有效果的,大批的仓库已经被封闭了。还有一些仓库是自主关闭的,就是没有等通知自己就把它删掉了,估计腾讯在国内也找到他们了。

这些两用技术——可以做好事也可以做坏事的技术,在政策里头GitHub明确表示:允许双用途内容与安全研究,默认善意,只有在广泛正在发生的滥用时才可以限制访问。腾讯就证明了,说这些仓库正在被大规模的分支(有一些仓库可能有上百个分支),这一次GitHub就给它处理掉了。

大家有没有想过,为什么现在这样的一个时间点,腾讯就跑出来折腾?腾讯是1月8号去投诉的,刚刚过完元旦。大家是不是最近在玩一个很有趣的游戏?这个游戏叫做“用微信聊天记录生成年度报告,然后再把这些微信聊天记录喂给AI做总结”。很多人都在玩这个,因为我已经在微信的朋友圈里头看到一堆人在晒了,你看我去年都聊了这些人,我跟谁谁谁关系怎么样。

腾讯肯定不希望你去做这个事。腾讯认为,所有的微信聊天记录都是他的,他要拿这东西去训练大模型,去做各种事情,你是不能把它拿出来的。

腾讯其实从去年就在尝试投诉,但是去年GitHub没理他。为什么?因为去年腾讯走的不是数字千年版权法,它走的是隐私保护。他认为说这些人侵犯了用户的隐私,GitHub就没有理他。本来这些微信聊天记录是腾讯自己视为禁脔,准备拿去训练大语言模型的,被导出去,那真的是叔可忍婶不可忍。1月8号就引用了数字千年版权法案再来了一次,这一次终于好使了。

“南山必胜客”的往事

腾讯历史上其实干过一些类似的事情,我不知道还有没有人记得。

  • 珊瑚虫QQ:这个版本实际上就是第三方写的,调用腾讯的各种API,给腾讯做了一个非常简洁的QQ版本,没有广告非常清爽。腾讯处理的方式就直接起诉,把这哥们罚了120万(2008年干的活),而且判了三年有期徒刑。
  • 微信群控软件:也是被腾讯起诉,被罚了260万。
  • 自动抢红包程序:有些人说我做个钩子在里边干嘛?就是自动抢红包,发现哪个群里有红包我自己就进去抢去——这个是被罚了475万。

腾讯只要发现有人敢在他自己的地盘里干坏事,他就一定会冲上来起诉你,没有什么好商量的。南山必胜客在这种案子里面还是无往而不利的。

后续这件事情会怎么发展?开发者有10-14天的时间可以提起抗辩。目前还不清楚是否已经有开发者去提起抗辩了,大概率没有。即使有的话,抗辩成功的可能性也很小。

腾讯是出于好心吗?黑灰产的真相

腾讯这一次到底是不是出于好心?别每次腾讯干点什么事咱就骂他。

首先要讲,微信上面的黑灰产还是很猖獗的。为什么?原因很简单,第一个是用户量巨大,功能非常复杂,超级APP嘛,从头到脚没有什么东西它是不干的,里头还有支付能力,里边是有钱的。所以大量的手机卡号注册的这种假微信账号,都是在机器人程序的控制下干着活。

其实真正的黑灰产,有可能会用这些开源库作为基础,但是一定不是在开源库的上面就直接用的,他们一定是有自己的私有的代码库。但是这些黑灰产是不是使用了这些开源库,你是没有办法去证明的。真正的黑灰产代码,绝对不会存在这些公开的代码仓库里边。

对于真正的黑灰产,腾讯其实也一直在努力进行防护,只是效果还有待观察,可能还要再等一等看。至少目前为止吧,在微信里边、在QQ里边,上当受骗的人还是每天都在产生。

数据主权之争:平台方的核心利益

这次腾讯干的活,主要还是面向用户聊天记录进行主权宣誓。微信怎么能这么坏?明明是我的聊天记录,凭什么你替我去维权,还把我自己用的开开心心的这种微信聊天记录备份工具给我封掉了?

这个先别急着骂。我们在X上发的推文是不是属于我的,还是属于马斯克的?我们在Reddit里头发的帖子,到底是属于谁的?大家想一想,他们是直接封闭了原来免费开放的API,然后开始去卖数据去了。

  • Reddit直接把用户数据卖给谷歌、卖给OpenAI了。
  • X直接把自己卖给xAI了。xAI之所以能发展这么快,就是因为有大量X上的数据在帮助它做训练。

所以所有的平台都认为这些数据是属于他们的,不光是微信这样,包括X和Reddit都是这么干的。AI时代,数据主权一定是平台方争夺的核心利益。

这里边比较奇葩的是谁?是谷歌。自己基本上不出来投诉,即使是那个广告拦截插件,谷歌会出来呼吁大家不要上广告拦截插件,但是他绝对不去投诉这些广告拦截插件。反正谷歌说你们这些事情,我就认为都是两用的技术,你们都在用它做好事就完了,我就不管你了。

总结

最后总结一下吧。元旦过后,大家玩微信聊天记录统计玩的正开心的时候,腾讯向GitHub投诉了,有开源项目绕过了腾讯的技术壁垒,窃取了受保护的内容。他引用了千年数字版权法的1201条款(叫反规避条款),要把他们都干掉。GitHub就从善如流了,4,195个仓库被封闭。

AI时代,聊天记录这种数字资产是任何平台都不会放弃的。

好,这个故事就跟大家讲到这里。感谢大家收听,请帮忙点赞、点小铃铛,参加DISCORD讨论群。也欢迎有兴趣、有能力的朋友加入我们的付费频道。再见。


背景图片

🔲 ☆

感觉的代价?

看到网友的一篇帖子:

在我二十歲以前,我是一個可以穿牛仔褲睡覺的人。我可以在,今日看起來實在不太舒適的環境下睡覺,不會特別覺得怎麼樣;舉例來說,那時我的床板上鋪的是幾張囤起來準備做模型用的紙板,冬天時實在被床板沁上來的寒意冷得受不了,才去買薄床墊。

那時的我是非常荒廢「感覺」的,我不僅和內在的感覺疏離,也很鈍於外在的感覺,我認為那是我可以穿著牛仔褲睡覺的原因。現在的我,即使穿著柔軟的睡褲,有時候還嫌壓到衣褶子不舒服,差不多是個豌豆公主。

就算現在的我想越過時空去對過去的我表達憐惜,那時的我也一定感覺不到吧。

回頭一看,真是跋涉了好長的路,來到這裡。#

这样的视角,我还是第一次见,于是感到很惊讶。以往看到过很多描述,和年轻时可以随意风餐露宿的状态的对比,最终都是自嘲几句如今娇气了。而这一篇,则认为从前的状态,是一种「不重视感觉」?与之相对的,如今的豌豆公主,是一种重视感觉后的进步?or 至少是进步的代价?

我提出这样的疑问。对方也是日常在 follow 的,多数三观比较一致的网友,于是回复的氛围也很融洽。对方的回复:

的確也有想過自己是不是變得嬌貴了,不過畢竟自己的事情自己最清楚;那時發生了一些大大小小的事,年輕時的我很自己為可以用理智壓制自己的一切,卻在重要關頭發現身體與意志不統合,情緒會逃出來控制身體。

至於豌豆公主是好是壞,我倒沒有想評價,而是接受。頂多就是,感謝現在的我有一些外在條件讓我可以是豌豆公主吧。

其它有着共鸣的人也来讨论:

這樣的狀態是一種進步嗎?我覺得我不會用進步形容它。比較像是在爬一座山,一開始在山腳時,我的身心靈狀態,和登上山後,身心靈狀態已經皆然不同了。

以前的我因為一些事情,常常是伴著淚水入睡的,或是餓著肚子入睡的。從現在往回看,那時候我的身心靈是身.心.靈,三者分開,處於一種先各自顧好自己,無暇顧及其他的狀態。

后面更多地在交流,重视感觉的重要性,和渐渐懂得要重视感觉的心路历程……


我当然赞同重视感觉的重要性;但我大概明白,这个思路的 bug 在哪里。把风餐露宿的青春,和不重视感觉的青春,过度地绑定在一起,以致于前者连带着一同被否定。以及,在发言者之后的人生历程中,那些风餐露宿,并不是什么需要被重视、发展的能力,所以也就无妨被顺带抛弃。抛弃时甚至不会想着,要不要捡回来珍念一下。

发言的人,日常的生活方式、和在其它维度的一些倾向,也符合我的预期。所以也只是大家对不同东西的权重不同吧。并没有否定对方的意思;只是这样的思路我第一次见,记录一下。

🔲 ⭐

寻找适合的自建聊天工具

到现在为止,并没有找到最合适的解决方案(目前最靠谱的是 Nextcloud Talk 和 Voce Chat)。先把过程中考虑到的一些因素,记录下来,作为借鉴。

我的目的,是如何更便捷地,和墙内小范围的朋友、家人,保持联系,在对话中不受信息审查。现有的聊天软件,能够不翻墙使用的,几乎没有了,即使有,也不是长久之计。所以最靠谱的方式,大概只有通过一台海外的 vps,自建服务,供小范围的人使用。如果传播范围不大,除非 gfw 变成白名单,否则应该都可以长期使用。

下面是选择各种自建聊天工具时,会考虑到的因素。这些因素之间,有些是互相冲突的。对不同需求的人,在这些因素之间考虑的权重,也不一样。对于我上述的需求来说,

  • 不需要考虑的因素,用黑色显示;
  • 希望能有,但没有也无所谓的因素,用蓝色显示;
  • 非常希望能满足的因素,用绿色显示。

首先,我希望这是一个可以挂机的聊天工具,可以在收到信息时,从手机接收到通知;而不仅仅是个网页聊天室,只能在专门打开网站时,才能聊天:

  • 可以持续挂机,通过 app 或者「Chrome 把网站添加到桌面」的功能,实时接收来信通知
  • 除了手机外,也能在 pc 的浏览器里使用

要联系的人,并不擅长电脑技术和操作,因此

  • 不需要翻墙使用
  • 操作简便
  • 有中文界面

这些人,可能并不属于同一个群体。所以,需要为不同的人群,架设不同的服务地址,互相分开。

  • 在一台 vps 上,同时部署多个聊天服务。一些功能更加完善的聊天服务如 xmpp,因为需要独占端口,并不能满足这一点;

安全性方面:

  • 信息加密
  • 开源
  • 不和中央服务器连接,一些 self-host 的服务,会经常连接开发者的服务器,虽然只是检查升级或校验程序完整性,但还是看着心虚;
  • 完全通过域名交互,不向其它服务器暴露 ip 地址
  • 用户之间的私信,对管理员也不可见,否则,其实开个 fediverse 实例,可以满足这里很多条要求;
  • 用户之间不会互相暴露信息,譬如很多协同工作平台,可以互相看到所有用户的名单、email……

架设系统的便利程度:

  • 支持 docker + nginx 部署,或者直接放进 php 目录就能运行
  • 系统开销小,内存上 G 的那种就算了吧;
  • 不需要 mysql 等专门数据库,因为规模不大,sqlite 就足够了;
  • 能部署在网站的子目录下,不需要独占一个子域名;

对聊天功能的需求:

  • 是否要加入去中心化网络,和其它服务器的用户交流?对我来说,这不是必须的。而且这在部署的便利性、轻量级、安全性、同时部署多个服务……等方面,都会造成冲突;
  • 可以群聊,也可以一对一私聊
  • 可以传输文件;
  • 支持语音
  • 支持视频;
  • 注册过程简洁,可以由管理员直接生成账户;
  • 可以关闭对外注册

……………还有什么要补充的吗?


已经考察过的工具

其实最理想的,应该是一个 php 的聊天室……能通过 chrome 在手机桌面接收消息通知就可以。轻量化、可以塞到任何目录下、没有中文我自己汉化也可以。但是,真的没找到靠谱的…………求推荐!!!

ps,如果联系人有一定电脑常识,也懂英文的话,用 mycryptochat 做临时沟通,蛮好用的。

目前最合适的,是 Nextcloud Talk,用 docker + sqlite + nginx,是可以做到快速部署的;占用内存不到 300MB,勉强可以接受(所以开销更高的方案,基本不考虑了);而 nextcloud 作为一个庞大的办公平台,其 web 界面对于非技术人士,未免有些眼花缭乱。

xmpp 和 matrix 服务器,可以做到开销更小,但也在 100MB 以上,还涉及独占端口的调整,部署起来繁琐很多。似乎也可以把跨实例通信的功能关掉,做成封闭社区,配置和开销会简单一些。但还没仔细研究。

各种协同平台类,如 Mattermost、Rocket.Chat,系统开销过大,就算了。

这两年有个国人开发的 VoceChat 工具,评价很不错。可以 docker + nginx 部署,内存 30MB,有 web 界面和自己的 app。推荐大家可以试试。目前发现的一些问题:

  • 免费 license 有 20 个用户的限制。 问题不大;
  • nginx 不能反代到子目录,只能独占域名的根目录;
  • 可以看到其它用户的 email,但用邀请码注册的话,可以填假的,不用验证;
  • 最大的问题:VoceChat 的语音聊天模块,是外挂的 agora.io,——是著名的大陆运营商,当年 clubhouse 因此遭受很大质疑。所以,不要用它的语音功能谈关键的信息。进而,这个软件的文字聊天的安全性,虽然是开源,但使用官方 docker 时,也让人有些嘀咕了。
🔲 ☆

制作了又一个微信小游戏——寻爱迷踪

上次预告的微信小游戏《寻爱迷踪》,伯衡君已经制作完成并上架,其实上个月就上架了,伯衡君在本月才撰写这篇文章,同时更新的博客文章也少了,主要是我在认真学习机器学习,深度学习等人工智能相关知识,目前小有所成,后续更新会逐渐恢复,蹲下去是为了跳得更高,是为记……
🔲 ☆

通过微信开放平台授权获取公众号文章

如果想要实现一个将公众号文章搬运到某个社区中去发布的功能,除了使用爬虫等方法,还可以通过微信开放平台授权,调用官方接口来获取公众号文章。

类似于腾讯云开发者社区自媒体分享计划、OSCHINA 开源中国 OSC 源创计划,这两个平台都有搬家的功能。

开源中国应该百分百使用了此接口,而腾讯云开发者社区就不一定了,通过查看公众号设置中的授权管理,腾讯云官网只授权了公众号账号信息服务获取认证状态信息两个权限集。

而开源中国的授权权限就是本文中要说明的两个:公众号账号信息服务素材管理

  • 公众号账号信息服务 用于获取授权公众号的信息,例如头像、名称、二维码地址、头像地址、简介等
  • 素材管理 用于获取发布的文章等

配置

开始之前需要先注册微信开放平台,有一个发布过文章的公众号用于测试。

在微信开发平台中进行配置:

微信第三方平台详情

  1. 获取APPIDAppSecret
  2. 开发配置中配置公众号权限集:3 公众号账号信息服务11 素材管理
  3. 开发配置中配置开发资料,设置授权流程相关的域名和白名单等。

开发资料

开发资料填写示例如下:

  • 授权事件接收配置:example.com/events.php,用于接收平台推送给第三方平台账号的消息与事件,如授权事件通知、component_verify_ticket 等。
  • 消息与事件接收配置:example.com/$APPID$/events.php。本文中的场景应该用不到。
  • 授权发起页域名:example.com,必须从本域名内网页跳转到登录授权页,才可完成登录授权
  • 其他的就按提示说明进行填写配置。

测试使用

使用 PHP 语言为例,ngrok 进行内网穿透。

使用 easywechat 的 SDK:

composer require w7corp/easywechat:^6.7

新建4个文件,实际开发中应结合所使用的框架进行封装。

  1. auth.php 用于生成微信授权的链接,这里需要生成链接可点击,因为微信的授权链接需要携带referer才正常授权。不然可能会遇到错误提示:请确认授权入口页所在域名,与授权后回调页所在域名相同,并且,此两者都必须与申请第三方平台时填写的授权发起页域名相同
  2. events.php 用于接收授权事件;
  3. callback.php 授权后的回调地址;
  4. test.php 用来编写获取公众号账号信息、文章的代码。

首先初始化 SDK,这部分代码在4个文件中都要添加,下文会省略。

include __DIR__ . '/vendor/autoload.php';

use EasyWeChat\OpenPlatform\Application;

$config = [
    'app_id' => '', // 开放平台账号的 appid
    'secret' => '', // 开放平台账号的 secret
    'token' => '', // 开发资料中配置的消息校验Token
    'aes_key' => '', // 开发资料中配置的消息加解密Key
];

$app = new Application($config);

events.php

SDK 默认会处理事件 component_verify_ticket ,并会缓存 verify_ticket。暂时不需要处理其他事件,所以直接这样使用:

include __DIR__ . '/vendor/autoload.php';

use EasyWeChat\OpenPlatform\Application;

$config = [
    'app_id' => '', // 开放平台账号的 appid
    'secret' => '', // 开放平台账号的 secret
    'token' => '', // 开发资料中配置的消息校验Token
    'aes_key' => '', // 开发资料中配置的消息加解密Key
];

$app = new Application($config);

$server = $app->getServer();

return $server->serve();

auth.php

$app = new Application($config);
# 使用对应的回调地址,授权后会跳转到该地址
$url = $app->createPreAuthorizationUrl('https://example.com/callback.php');

# 需要通过点击携带referer
echo "<a href='{$url}'>{$url}</a>";

点击生成后的链接,扫码进行授权,扫码完成并授权后,页面将跳转到callback.php

callback.php

$app = new Application($config);
$authorization = $app->getAuthorization($_GET['auth_code']);
$authorizationInfo = $authorization->toArray()['authorization_info'];

var_dump($authorizationInfo);

$authorizerAppid = $authorizationInfo['authorizer_appid'];
$authorizerAccessToken = $authorizationInfo['authorizer_access_token'];
$authorizerRefreshToken = $authorizationInfo['authorizer_refresh_token'];

获取到授权公众号的appidaccess_tokenrefresh_token,需要结合业务保存到数据库中。

test.php

获取到所需要的信息以后,就可以调用官方的接口来获取信息了:

$app = new Application($config);

# callback.php 中返回的信息
$authorizerAppid = '';
$authorizerAccessToken = '';
$authorizerRefreshToken = '';

// 获取账号信息 https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/authorization-management/getAuthorizerInfo.html
$response = $app->getClient()->post('cgi-bin/component/api_get_authorizer_info', ['json' => ['component_appid'  => $config['app_id'], 'authorizer_appid' => $authorizerAppid]]);
var_dump($response->toArray());

// 获取已发布的文章素材 https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_materials_list.html
$officialAccount = $app->getOfficialAccountWithAccessToken($authorizerAppid, $authorizerRefreshToken);
$response = $officialAccount->getClient()->post('cgi-bin/material/batchget_material', ['json' => ['type' => 'news', 'offset' => 0, 'count' => 20]]);
var_dump($response->toArray());

这样就可以通过$officialAccount来调用公众号的所授权的接口来获取需要的数据了。

🔲 ☆

正名示意,我将公众号名改成了真名。

是的,没错,我修改了从 17 年注册的公众号名称,使用真名了。

公众号记录

2023 年 04 月 19 日 “沈唁志”改名“鲁飞”
2023 年 01 月 30 日 通过个人认证审核
2017 年 10 月 09 日 注册“沈唁志”

沈唁的意义

沈唁,这个花名已经记不清从什么时候开始使用的了,反正是个非主流的年代起的。

,读作 yàn,其本义是吊丧,对遭遇丧事表示慰问的意思。后多指对遭受凶事的人的慰劳。

这个花名对我来说是对于自己的过去的一种回忆,希望能在自己的选择下走出来正确的道路,用来激励自己。

我的 GitHub 个人介绍写的是🍃 Don't let your past determine the future. 不要让过去决定未来。

过去不必决定未来的选择、行动或结果。无论过去的错误、失败还是挫折,可以从这些经历中吸取教训,放下消极情绪或自我怀疑,专注于创造一个更好的未来。

而且字使用输入法不太好打出来,有时候可能需要翻好多页,才能找到。所以可能有些人打出不来这个字。

博客的 title 也是沈唁志,19 年的时候做到了百度权重 3,后来没怎么管了以后就降了。这次改名也听别人的建议,顺便把博客的副标题改了,加上了鲁飞,这样在搜索时也能搜到了。

沈唁见得多了,就有人会以为这才是我的真名,实则不是。鲁飞才是。

你们找的是鲁迅,关我周树人什么事?

其他链接

沈唁也会继续使用,在各个技术、社区平台看到的沈唁可能都是我,如果不是,纯属巧合。

包括但不限于以下平台:

🔲 ⭐

看上去不起眼的微信机器人以及公众号爬虫

互联网发展零零散散都要20多年了,技术发展的重心也一直在演变。今天这篇文章很特别,起因是最近有一些关于微信机器人以及公众号爬虫的需求,本以为这种老透了需求其实现在根本不需要花什么时间精力去搞,结果没想到这个东西在过去的十几年里经过了很多次变化,于是决定记录下这篇文章,一方面是留个技术存档,另一方面也是想看看10年之前的技术相比现在和10年之后发生过又或者会发生什么的变化?

公众号爬虫

公众号爬虫在我看来按理说应该是老掉牙的技术了才对,2012年8月17日,微信公众平台正式向普通用户开放。而正式上线则是8月23日,命名为“官号平台/媒体平台”。

基于搜狗搜索的爬取

微信从制作公众号开始其实意图就是在微信的平台基础上营造一个新的互联网生态,而公众号早期就有搜索和爬虫的问题在,而早期的微信公众号搜索大部分都是基于搜狗搜索制作的。

img

但比较麻烦的问题是,搜狗搜索在使用的过程过程中加入了很多很多限制。

  • 大量请求之后会触发验证码
  • 无法精确搜索指定公众号,输入公众号名会搜出多个公众号,且对应的文章链接是临时链接,几个小时之后会失效。

主要的问题就是后面这个限制,如果爬虫搜到的文章链接都是临时的,那你爬取的结果就只能用作临时处理,这显然不符合大部分人的需求。所以这种爬虫方式已经被废弃了,市面上主流的公众号爬虫都不使用这个方案。

img

2019年后这类爬虫工具纷纷失效

基于中间人的爬取

在搜狗搜索之后,爬虫的从业者又开始想点子了,既然没有办法在互联网上搜索到公众号,那就把视角回到微信上面,基于中间人代理的方式抓取数据。简单来说就是通过mitm来拦截微信中对公众号的请求,并对内容做处理。Github上高星的微信公众号爬虫都是基于这个方案制作的。很可惜的是,哪怕是最新的工具最少都是3年前才更新过。

img

这个爬虫有几个比较大的问题

  • 必须独立使用一台windows服务器去做,因为微信只有win和mac版本,你想要把他跑在线上就必须搞一台windows服务器,而且还必须挂一个微信上去,成本就很高
  • 微信在不知道什么时候做了额外的反爬机制,根据我的搜索应该就是22、23年左右添加的,触发某种反爬机制之后,惩罚从以前的封禁24小时修改成了永久封禁。这个封禁方式也很有意思,他阻止你访问微信公众号的历史列表

img

被封禁的微信账号不能访问公众号的历史文章,不影响其他的任何功能,比较有意思的一点是,这个功能我在新版本的微信中找不到了,换成了一个其他的页面。

img

如果你尝试使用中间人的方案去爬微信公众号的文章,那么你会在触发反爬规则之后被阻止访问触发规则的页面(我猜测是这样,我被封了3个号都没找到被封的具体原因),这样的话可以最小限度的避免对普通用户的影响,毕竟普通用户刷微信公众号的频率也很高。但事实则是,由于我们无法访问历史文章列表,即便我们还可以读取文章内容,但也无法实现自动更新了。

基于微信公众号的爬取

其实到上一个方案已经涵盖了99%的主流方案了,现在随便搜一搜微信公众号爬虫基本都是3年前左右的东西基本都是基于中间人做的,这也给了我很大的困扰,我不知道是不是真的有现在还能用的工具,但我的确找不到一个很靠谱的方案。

在我努力挖掘下,我找到了一些零散的接口,可以用来获取某些信息。

不知道大家有没有用过微信公众号的后台,新建草稿箱里插入超链接可以引入微信公众号的链接。

img

选择公众号之后可以通过下面的文章列表来查看,这里可以获取到所有的文章链接,然后再利用前面的中间人方案爬取文章内容。

img

这个方案最大的问题就是cookie会失效,不是全自动,就是需要每隔几天更新一次cookie还是挺麻烦的。

并且公众号的这个功能也有反爬,相比单篇的页面内容爬取,公众号的这个功能使用频率更低,你可能需要设置3分钟以上。但总得来说起码可以实现我们的目的。

img

爬虫本身

前面零零散散的讲了很多方案,现在我们把视角转回到这个事情本身上,看看问题的难点到底在哪里。

首先,爬虫的第一部分就是,标志微信公众号的东西是什么?

微信公众号和微信不太一样,没有微信号之类的存在,所谓公众号名呢更是可以修改,所以在公众号的体系下引入了名为biz的标志码,当我们随便打开一篇微信文章,就可以从源代码里搜到这个标志码。

img

这个base64编码过后的字符串就是微信公众号的id,通过__biz可以获取微信公众号的很多内容,其中就包括微信公众号的信息。在之前的很多文章当中,大量的引入了使用biz获取微信公众号信息的方案。

img

但不知道从何时开始,微信在这个页面加入了对应的限制,如果浏览器直接访问会返回。

img

这里插入一个笑话,我在搜索相关资料的时候看到的。:>

img

网上搜索到的信息到这里基本都是错的,事实上在现在微信的防护策略里面,是对页面的分级策略的,在pc版本的微信打开的每一个弹出窗口,大部分都是web页面,其中的区别是,点击链接只是单纯的使用内置浏览器打开页面,而点击内置功能,则可能使用在中间加入额外的限制以及权限验证,就比如前面的链接,就是验证了微信账户,如果没有相应的权限则返回”请在微信客户端打开链接”,这点可以用一个特殊的方式来验证。

1
Wechat.exe -remote-debugging-port=9222

通过加参数的方式打开微信并登录之后,随便打开一个页面,并访问http://127.0.0.1:9222/json,我们可以在返回中找到对应的链接,这个接口是webdriver的CEF协议接口。

img

img

而更大的问题在于,这套老版本pc微信被废弃了,新版本的微信废弃了这部分的实现方案

我用了一些方案去调新版本的微信,我发现解决问题的难度已经远大于问题本身,于是,解决问题的方案还是回到老版本的方案中。

微信机器人

qq机器人

相比公众号爬虫来说,可能微信机器人对于很多人都是一个远古的记忆。比起微信机器人来说,其实大家了解更多的可能是qq机器人,又或者是基于微信公众号或者企业微信使用的机器人,再到后来大家比较熟知的类似于飞书机器人。但微信机器人其实是一个相对比较空白的场景,主要是定位的区别。

qq机器人的发展史及其复杂,早期的qq技术力比较弱,很多qq机器人的用的都是直接逆向qq用底层的接口实现的。甚至早期有大量的qq机器人就是直接用qq的接口重写实现。

到中期,以酷Q为代表的基于Docker和wine实现的酷Q on Docker成为更稳定和主流的实现方案,当然,在2020年由于腾讯的执法追责,酷Q下线,很多第三方QQ机器人就此结束。

img

当然除了早期的各种机器人以外,还有很多至今为止仍然好用的东西,其中一个很有名的就是mirai。

与此同时,QQ也推出了内置的机器人接口,甚至也推出了官方机器人可以直接添加到qq群里,除了qq群还有qq频道的专属机器人,开发者可以直接用官方的平台来定制化机器人实现。

img

相比QQ漫长而又复杂的变化来讲,其实微信机器人的演化更为粗暴。

微信机器人演化

早期的微信机器人大部分都是基于微信web版本

img

既然有方案,那自然也就有相对的方案,一个是web版本的微信在后续的更新中删除了很多很多功能,基本没剩下什么接口了,而且cookie的过期时间也被加速了,几个小时就会掉。另一个是现在权重低的微信号(小号、新注册的)根本就没办法登录web版本的微信,所以这个方案在后续的演化中被放弃了。

微信官方接口

类似QQ,微信相对的也拆分出了很多场景,在微信中承担交互作用的是公众号、订阅号、小程序。而公众号、订阅号和小程序都有相应的api和平台用于实现自动回复以及交互功能。

img

之前比较主流的机器人+扫描器场景,其实都是在这个基础上实现的交互方案,这个东西有api可以用,也有很成熟的库可以直接调。企业微信也提供了自建应用的方案来实现类似的功能

作为机器人无法解决的问题就是群管理和好友管理问题。但其实微信也设计了相应的场景就是企业微信,在企业微信的后台可以直接新建客户群,并且依托客户群的功能来管理微信群。这里有个很大的优势是,微信群默认超过200人就不能通过二维码进群了,而客户群可以配置用一套模板自动建群进群,原意应该是为了维护私域客户群。

img

比如说如果想通过API来交互调用消息推送到所有客户群,企业微信也提供了相应的API,但是每个用户每天只能推送一次。

但是以上的所有方案里面最大的问题在于企业微信的很多功能都是需要认证之后才能用。

img

而且这个东西还挺坑的一点在于,这个认证不是直接付费使用,而是必须用公司营业执照或者法人代表等东西认证。

而更坑的是企业微信的外部群,就是前面提到的客户群,目前是阉割功能的,不能添加类似群机器人的东西。这个东西几年前就是这样,可能企业微信不希望你用这种方式管理群。

img

除了比较基础的群管理,自动回复等等以外,企业微信的小程序接口也是自由度相当高。这块东西是很多人使用企业微信的主因之一

img

在这里创建企业微信应用之后,可以直接通过相应的api来向应用发送消息,也可以配置api接受消息来实现信息的交互。

img

就比如现在很流行的给微信机器人接ChatGPT,其中就比如

就支持通过API接受消息来实现和chatgpt的交互

img

但我又遇到了一个新的问题就是,怎么把企业微信的内部应用对外使用呢?正常来讲,企业微信自建应用主要是对内的,企业内部使用,企业微信本身其实没有设置相关的场景。

之前也看到过那种用这个方案实现应用对外共享的应用,他们直接选择建一个企业卫星来解决这个问题,用户可以直接加入企业然后使用工作台里的自建应用。

img

在我研究了一段时间之后,抛开企业微信的企业内场景,现在微信也提供了官方的智能对话接口可以实现类似于微信客服的东西。

img

在微信对话开放平台你可以自己注册一个自己的机器人,在这里你可以通过很多种方式配置自动回复,其中有比较简单粗暴的培养式,也有高级的基于接口开发

img

除了简单的对话式设定,还支持高级的词典式解读对话。当然我觉得相对比较实用的是在高级对话里可以关联接口,甚至可以自定义接口,这就为这个接口增加了很多的可能性,你可以通过自定义接口来实现某些功能。

img

通过微信客服的接入功能,我们可以用微信的智能客服来替代原本只能自动回复的原客服机器人,用户可以在客户群里添加客服助理并对话。

img)img

我花了一段时间把相关的各种api都研究了一遍,但其中的问题都不少,主要问题就是他总是有各种各样的限制场景,相比可以自由操作的普通微信账号功能差距还是很大。

第三方接口

抛开官方提供的方案以外,和qq的方案类似,微信机器人也用了类似的逆向破解接口的方案来实现对部分功能的调用,其中很大程度上依赖的是历史版本的微信,这也得益于微信对于旧版本的支持,很多机器人运行的还算流畅。

我研究了很久,现在比较成熟的工具是可爱猫。

img

当然由于各种各样的原因,可爱猫现在已经没有公开的渠道获取了,想要的话需要找社群去弄。而可爱猫虽然是一个易语言写的工具,但是却实现了一套很成熟的http接口插件方案。

img

通过插件可以配合自己实现的web接口来实现各种各样的功能

img

img

整体还是比较简单好用的,唯一的问题是可爱猫在服务器运行会有很大的概率导致微信闪退,最关键的是无法稳定。我曾经稳定运行了半年,之后一直闪退怎么都开不起来,再到后来突然又好了。

除此之外,还有很多类似的方案可以直接操作微信的dll

img

但是这个东西最大的问题是容易封号。我了解了以下是第一次警告踢下线,第二次封号

img

顺这个我也看了不少相关的东西,有比较靠谱的方案就是直接在桌面版的微信上注入DLL操作。

img

这个方案据说比较靠谱。使用这种方案最大的优势就是你可以操作完成微信中需要的各种部分,就比如监控管理好友、群,自动回复私聊和微信群消息

写在最后

其实前面记录了那么多,大体上把过去的很多方案都聊到了,这篇文章其实是没有讲到什么新东西,主要是花时间在研究已经有的东西,其中遇到最多的问题,就是探索微信官方对于各类功能的程序是如何认可和定义的。这本身不是一个技术上的问题,所以很多部分只能逐渐探索,无法得到准确的结果。

🔲 ☆

调试微信内置浏览器

微信内置的浏览器在不同的平台下的实现方式不同,但都接入了微信自身的OAuth机制用于鉴权。有些时候但微信本身的调试接口藏得很深,有些实现也没有提供一个调试窗口。此处我们以获取调试中的cookie为例来探讨不同设备的异同。

X5内核

在国内下载的微信使用的是腾讯的X5内核。X5内核自带调试功能,可以由以下方法开启:

在微信中访问 http://debugx5.qq.com ,在X5调试页面开启TBS内核Inspector调试功能。

如果提示您“非x5内核”,此时您的微信应该使用的是系统原生框架。您可以参考下一部分的“系统原生框架”进行调试,但也可以在微信中访问debugmm.qq.com/?forcex5=true切换为X5内核。(访问debugmm.qq.com/?forcex5=false就可以切换回WebView,但可能并不完全。)

系统原生框架

iOS和Google Play版本的微信在浏览器实现上调用的是使用系统提供的框架。

因为Android自带的WebView调试需要在打包时传递测试参数,而iOS则需要测试证书才能够调试,对于我们此处的例子是不适用的。

最简单的方法当然是安证书抓包。但是因为一些原因不方便抓包的时候,我试验成功的办法,是:

  1. 生成自己的根证书并对需要调试的网页进行自签名。
  2. 在手机上安装此根证书。
  3. 在电脑上搭建对应网页的服务器,目的是接受手机端传入的cookie,再配置自签名的证书。
  4. 在电脑上搭建DNS服务器,将欲调试的网页的DNS结果转发到上述网页服务器上。
  5. 配置手机使用电脑上的DNS。
  6. 此时就可以接收到cookie了。

后来观察到,当我试图在使用x5内核的设备上修改DNS服务器的时候,chrome已经可以工作,但微信并未生效,一直超时。后来发现x5内核使用微信自己实现的DoH,整个过程中只会查询微信自己的系列DoH服务器域名。而系统原生框架则不支持相关操作。

❌