Normal view

There are new articles available, click to refresh the page.
Today — 7 November 2025Curiosity

[分享] 做了个程序员工具箱, 20 个在线工具,求反馈

7 November 2025 at 18:31
qq530889783: 大家好,

工作中经常要用一些小工具( Base64 编码、JSON 格式化之类的),网上的要么广告多,要么担心数据泄露,所以就自己整理了一个。

🔧 **包含工具:**
- 编码转换:Base64 、URL 、Unicode 、HTML 实体、进制转换
- 加密解密:MD5 、SHA 、AES 、JWT 解析
- 格式化:JSON 、XML 、SQL 、CSS 、JavaScript
- 文本处理:正则测试、字数统计、大小写转换、UUID 生成
- 其他:二维码生成、图片 Base64 、时间戳转换、Cron 生成器

✨ **特点:**
- 纯浏览器运行,数据不上传服务器
- 支持暗黑模式
- 响应式设计,移动端友好
- 完全免费,目前无广告

🔗 https://devkitstools.pages.dev/

主要是自己用觉得方便,就分享出来。有 bug 或建议欢迎指出 👍

用了 4 年的 M1 pro MBP,电池已经明显不耐用了,直营店检测电池容量 81% 拒绝 ac+质保

By: zj9495
7 November 2025 at 18:23
zj9495:

已经用了 4 年的 21 款 MBP ,刚入手就买了 3 年的 ac+,去年到期又续了一年。

现在电池明显缩水,充电过程发热严重,电池电量低的时候还会明显卡顿,快要过保了到合肥直营店检测电池容量 81%,店员以系统检测为准拒绝质保更换电池,拨打 400 电话客服申请也是拒绝更换,一切以店里检测为准。

我是真的草了,用了 4 年的电池还给我说检测电池容量没到更换标准,使用第三方软件检测电池健康度已经到了 71%,4 年的 ac+钱白花了,下台 mac 再买 ac+ 我是🐶 1762510834868.png

高级产品经理 – 数据中心基础设施关键备电(北美大客户方向)-加州

7 November 2025 at 18:16
fancyfrees: 职位 JD 核心要素(侧重北美关键客户场景)
最好能能常驻加州,华裔 ,中国人,外籍人都可以
微信:fancyfrees

职位标题:高级产品经理 – 数据中心基础设施关键备电(北美大客户方向)
核心职责:
1.客户需求洞察:
o牵头对北美顶级数据中心供应商、互联网公司(英伟达、谷歌、Meta 和亚马逊等)进行深度访谈和现场调研,将其业务连续性目标转化为对备电基础设施的量化、准确、可执行的技术需求。
o建立与客户 CTO 、基础设施总监、数据中心设施经理的沟通渠道,成为他们值得信赖的技术伙伴。
o系统性地收集、分析并优先级排序来自北美前线销售、解决方案架构师的客户反馈。
2.市场与竞争分析:
o深度分析北美市场主流竞争对手(如 Vertiv, Eaton ,施耐德等)的产品策略、定价模型和优劣势。
o追踪北美数据中心头部企业技术路线趋势、地方性能源政策、碳税政策等宏观因素。
3.技术与支持:
o作为技术专家,参与北美战略客户的关键谈判。
任职要求:
•必须 拥有 5 年以上关键电源/数据中心基础设施领域的产品管理、技术销售或解决方案架构经验。
•必须 具备直接与北美大型企业客户打交道的经验,深刻理解其决策流程和痛点。
•必须 具备流利的英语沟通能力,能进行技术演讲和商务谈判。
•必须 熟悉北美地区的电气规范、安全标准( UL, Tier )和电网环境。
•具备电气工程、动力工程、自动化等相关专业背景,能读懂单线图和技术图纸。

Job Title: Senior Product Manager – Data Center Critical Backup Power (Focus on North America Key Accounts)
Core Responsibilities:
1.Customer Insight Development:
oLead in-depth interviews and on-site research with top North American data center providers and internet companies (e.g., NVIDIA, Google, Meta, Amazon) to translate their business continuity goals into quantifiable, precise, and actionable technical requirements for backup power infrastructure.
oEstablish communication channels with customer CTOs, Infrastructure Directors, and Data Center Facility Managers, serving as their trusted technical advisor.
oSystematically collect, analyze, and prioritize customer feedback from frontline sales and solutions architects in North America.
2.Market and Competitive Analysis:
oConduct thorough analysis of mainstream competitors (e.g., Vertiv, Eaton, Schneider Electric) in the North American market, including their product strategies, pricing models, strengths, and weaknesses.
oKeep up with technology roadmap trends of leading North American data center enterprises, as well as macro factors such as local energy policies and carbon tax regulations.
3.Technical Expertise and Support:
oServe as a technical expert and participate in key negotiations with strategic customers in North America.
Qualifications:
•Must have 5+ years of experience in product management, technical sales, or solutions architecture within critical power/data center infrastructure.
•Must have direct experience working with large enterprise customers in North America, with a deep understanding of their decision-making processes and pain points.
•Must have fluent English communication skills, including the ability to deliver technical presentations and engage in business negotiations.
•Must have familiarity with North American electrical codes, safety standards (UL, Tier), and grid environments.
•Preferred background in electrical engineering, power engineering, automation, or related fields, with the ability to interpret single-line diagrams and technical drawings.

智能电视能否自己升级电视机主板,屏幕好的。

By: xingye163
7 November 2025 at 18:08
xingye163: 家里前几年买的创维酷开的 65 寸电视,现在屏幕好好的,就是性能不够了,每次打开有广告不说,加载也慢的一匹,还缩应用安装,只能在他的应用推荐里选几个垃圾用,自己安装不给,要不是屏幕好好的没坏,都打算换新的了,现在想着说能否自己买个电视主板给他升级下,之前看到显示器的屏幕找个对应的驱动板都可以驱动成功,那电视机这个能否行的通呢?我看了下拆机,好像是两块板子,应该是一个主板一个驱动板,就是不知道电视机厂家是否有加密验证?

有做过的大神吗?

记一次心有余悸的闲鱼交易:你能否相信互联网上的陌生人?

By: dumbass
7 November 2025 at 18:00
dumbass: 事情是这样的,今年年初冲动消费在 PDD 多买了 meta quest 3 ,到手后光是激活都废了老大的劲儿,开机了两三次,新鲜劲一过去就放着吃灰了半年多。

其实在这半年里我无数次想把它出掉,但是每次都因为拖延症,今天拖到明天,这周拖到下周,转眼间半年过去了。前两天我实在坐不住了,痛定思痛把机器拿出来恢复出厂,配件收拾好,拍照发布闲鱼。

然后我在闲鱼遇到了第一个坑:闲鱼币抵扣。出掉这个机器好像是去掉心头大患,来不及细看,心焦气躁就勾选了抵扣:


很快就有人联系上了,经过几次不愉快的交流后,最后和一个自称是爽快人的买家达成了交易,被小刀了一笔。顺丰发货后,我终于冷静下来查看这位卖家的相关信息。

为了方便,以下简称卖家 D ,自称是 VR 爱好者,IP 显示为江苏,常住地安徽芜湖,评价将近 500 条。直到我点开"来自买家"的 tab 才发现那十几条的差评,以及主页上那 86% 的好评率。差评主要集中为砍价比较厉害、收到货不及时回消息、拖延确认收货,以及和买家的扯皮。

这时我才突然想起快递收货地址居然是在河北,心中疑云密布,但仍抱有一丝侥幸,应该没什么问题吧。两天后快递送到并被签收,但是又过去了两天仍未确认收货,我时不时点开卖家 D 的主页发现对方隔几分钟就会上线。

接着我就发现了好像哪里不对劲,智能抵扣将近 500 ,待收闲鱼币 50 万,而闲鱼币目前的回收价不过 3 元/万枚,对于我来说不亚于冥币。

合着是闲鱼送我 50 万的空头支票拿走了我 500 块钱的货款,本来低价出掉已经让我够难受的,又被官方狠割一刀这岂能忍,在小红书上偶然看到一个曲线救国的方法:联系买家申请退款,让对方重新下一个不抵扣的单。

于是我联系了卖家 D 说明了闲鱼币的坑爹之处,以再优惠 50 换取对方的配合,不愧是砍价王,坐地起价又砍了我 30 ,但主动权在对方手里我只能让步。我设置新商品,对方申请退款,但此时我心中闪过一丝不安,如果对方收到退款就此拉黑我,我该怎么办。

咨询闲鱼客服知悉,退款成功后钱款无法追回,只能举报对方是骗子。

是血亏 500 还是可能被骗 3000 ,我最终选择了相信这位卖家。

对方安照约定下了新单,但旋即关闭了订单,然后开始不回消息,而主页显示 1 分钟前来过。我脑子顿时一片空白:完了完了,这下芭比 Q 了。我为什么敢相信一个千里之外素未谋面的陌生人😭。

为了平复心情,强作镇定去厕所撒了泡尿,对方终于回消息了,说支付宝直接转账给我,但又砍了我一笔——闲鱼正常交易的服务费。我还能说什么,对方的每一个回复对我来说都是救命稻草。

接着又是在线不回复消息,我心想不会是什么缓兵之计吧。过了二十分钟,终于让我发支付宝账号。然后又是沉默。

我已经在想接下来的日子要怎么省钱才能堵上这几千块的窟窿,同时频繁刷新支付宝,十分钟后随着手机一声震动,支付宝到账,我激动地差点没跳起来。

事后直到睡前仍心有余悸,在这个过程中,对方完全可以在收到退款后将我拉黑或者装死不回,而钱货两空的我可能也没有好的挽救损失办法。

只能说相信人间还有诚信在,以及 fuck 闲鱼,官方吃相过于难看。大家在闲鱼出二手时切记不要勾选闲鱼币抵扣!!!

(抽奖)卖自家种的爱媛果冻橙

By: efirefish
7 November 2025 at 17:19
efirefish: 老家在四川蒲江,自家果园
爸妈种的有爱媛果冻橙,和耙耙柑,现在爱媛果冻橙,成熟了。耙耙柑还没有,成熟了再来发帖,绝对真实,有需要的可以联系(联系方式最下面)

大果 5 元 1 斤(包邮)
中果 4 元 1 斤(包邮)
小果 3 元 1 斤(包邮)
9 斤起卖

抽奖规则 每十楼随机抽取一位送中果(尝尝哈哈,包邮)重复评论不算哈

联系方式 V kingoftingpro

现在北京联通的 IPTV 都走路由模式了吗

By: phpfpm
7 November 2025 at 17:14
phpfpm:

大概是光猫改桥接之后不拨号了

但是 LAN 口除了给路由器拨号用以外

管理侧电脑接上去可以 dhcp 拿到光猫的 LAN 设置的 ip 地址。

通过这个 ip 可以管理光猫

以上都稀松平常,基操

但是我发现 iptv 可以接在任何一个网口拿到 lan 侧的 ip 可以正常接收节目列表和播放节目

这就很神奇了,traceroute 一下发现确实——走光猫的 LAN ip 的网关出去了

应该是内置了到 iptv 内网的静态路由了。

然后看了下光猫的管理后台:

4_IPTV_R_VID_3964Connected10.33.xx.xx3964/4AlwaysOn

这个 vlan 拿到了 iptv 内网的 ip 地址,可以直连访问了

想问下:我是少见多怪了吗?

之前都是光猫配置 iptv 的 vlan 的 access 接口,iptv 本身拿到联通的内网地址之后才可以播放节目

那种主页就一个密码框,然后还有一个密码大全的文件下载链接的网站是用来给网盘拉新的吗?

By: shendaowu
7 November 2025 at 17:10
shendaowu: 我感觉不是什么正经网站,不敢发链接,怕被降权之类的。没准那个网站在站长的黑名单里。好像是某个机场的域名被卖掉了,然后那个域名跳转到了这个网站。

网站主要就是一个密码框,没有账号之类的。那个密码大全的文件需要通过迅雷下载。下载之后输入里面的一个密码跳转到夸克网盘的一个分享链接。很好奇就安装了夸克网盘,并注册了。结果不是我想的那种视频。本来我最近对那种视频基本没什么太大兴趣了,但是不知道为什么这个网站就那么吸引我的好奇心。我怀疑是这种令人迷惑的网站勾起了我最初接触互联网的感觉,可能就是想体验那种通过各种复杂操作获得那种视频的感觉。也可能存粹就是精虫上脑了。

从结果来看我好像贡献了活跃或者新用户。我不知道我之前有没有注册过夸克网盘。因为我是在虚拟机里操作的,所以有点大胆了。不过感觉还不是特别安全,毕竟我用手机注册夸克网盘了。万一下载到假的夸克就栽了。不过我记得我好像是专门在必应上搜出来的夸克网盘的官网里下载的。我之前好像在本站听别人说过类似这种网站。不过我站内搜了一下没搜到什么。

假如你是第一次遇到这个网站,你感觉你会上钩吗?如果会的话给你们提个醒。

关于支付宝百万医疗险

7 November 2025 at 17:06
MagicalCarl: 在看为父母购买保险的帖子时很好奇健康告知:
我在支付宝上购买了百万医疗险,在健康告知时,我根据体检报告选择了肺部微小结核,但购买完成后它并没有让我上传什么佐证材料,如体检报告,是不是意味着选择没有任何健康问题也可以?

微信支付安全锁 还是不能关闭手势轨迹吗

By: SamClip
7 November 2025 at 17:02
SamClip: 请将就点看吧,使用 V2 的格式修改 imgur 的链接图片会莫名不显示




https://imgur.com/a/MZQtG6x



N 年没直接使用过微信支付功能,平常偶尔应用内使用也都是唤起支付功能,不需要解开安全锁。

某三甲医院住院部楼内的便利店收银系统只支持店家主扫。试了云闪付和支付宝的付款码都不行,只能被迫使用微信支付,由于开了微信支付安全锁出示付款码需要手势解锁,那个绿色线条明显的不能再明显了。在云闪付和支付宝都能关闭手势轨迹的情况下,微信为什么要特立独行?还是我没有找对地方。

Ps.强烈反感生物解锁。手机自带的指纹解锁和面容解锁从来没点进去过一直用 PIN 码

分享 keyboard maestro 的截图技巧

By: apollo007
7 November 2025 at 17:00
apollo007:

在用 keyboard maestro 的时候,我经常用找图的功能来定位目标位置。但是也遇到一个问题,就是模糊度经常变动,因为文字的锯齿会变动,导致模糊度超过阈值,从而失效了。

我把我总结的内容分享出来:

已知:默认阈值是 20%,文字的锯齿会变动。

目标:在阈值范围内,找到的截图是唯一性,而且就算平时的文字的锯齿渲染变动,影响范围也能控制在很低程度,绝对不会影响正常使用。

经验法则:文字占比 40%,纯色背景占比 60%最稳。文字数量不少于 2 个字。

解决办法:当默认的阈值是 20%,被识别出来的是 10%以内的模糊度。这时候就最稳,这时的文字占比大概是 40%左右。

截图内容:40% 是“不稳定的文字” + 60% 是“极其稳定的纯色背景”。

结果:那 60% 极其稳定的背景,起到了“稀释”和“压舱石”的作用。它把那 40% 不稳定文字带来的波动,给平均下去了。

截图为 png 格式

当旁边的纯色背景有点小怎么办,很简单,那就文字截取一小部分(至少包含 2 个字,要么横着 2 个字,要么竖着 2 个字),确保背景占 60%左右的面积。

如果文字占比只有 10%,纯色背景占比 90%,会怎么样?可能自身的容差为 2%,由于默认的阈值是 20%,那么会导致大量容差为 6%-20%的图会出现一大堆,从而违背了唯一性。

这样我就可以用截图搞定所有的地方了。

如果可以的话,优先截竖着的 2 个字或者 4 个字,因为横向的很容易出现类似文本,但是竖向的就几乎不太可能会出现类似文本。

[远程] Cryptape 招聘区块链底层研发工程师/Rust Software Engineer

7 November 2025 at 16:53
juliehuang1005:

About Cryptape

Cryptape is a pioneering team in the blockchain space, leading the development of Nervos CKB (Common Knowledge Base) — a high-performance, scalable Layer 1 blockchain protocol. We are committed to pushing the boundaries of decentralized systems through rigorous engineering and open collaboration. If you're passionate about low-level technical challenges and building future-facing infrastructure, we invite you to join the CKB engineering team at Cryptape.

As a member of the CKB engineering team, you’ll contribute to core system development, such as network protocol optimization (Fiber), virtual machines (CKB-VM), and smart contract tooling on CKB. We welcome engineers from diverse backgrounds — embedded systems, algorithm optimization, multimedia codecs, CPU architecture, and beyond. Prior blockchain experience is not required, but a strong interest in systems programming and a willingness to learn are essential.


Responsibilities

  • Develop and implement core functionalities of the Nervos CKB protocol.
  • Write and optimize smart contracts in Rust, leveraging CKB’s unique Cell model for flexible state management.
  • Optimize low-level code performance, focusing on resource efficiency and execution in constrained environments.
  • Collaborate with the global open-source developer community to evolve the CKB ecosystem.
  • Write clean, maintainable code and participate in high-standard code reviews.
  • Explore and implement cutting-edge technologies in the blockchain space.

Requirements

  • Strong grasp of computer science fundamentals.
  • Proficiency in at least one systems programming language (e.g., Rust, C, C++).
  • Solid experience in low-level development in one or more of the following areas:
    • Embedded systems or resource-constrained environments
    • Algorithm design and performance optimization
    • Multimedia codec or high-performance data processing
    • CPU instruction set development or related system-level optimization
  • Ability to analyze and improve performance in terms of execution speed, memory usage, and latency.
  • Excellent analytical and problem-solving skills, with the ability to break down complex problems and design practical solutions.
  • Self-driven and quick to learn through documentation and hands-on experimentation (e.g., picking up Rust or CKB dev framework).
  • Curiosity and enthusiasm for blockchain and decentralized technologies, with a continuous learning mindset.

Nice to Have

  • Familiarity with the RISC-V instruction set, or experience with virtual machine/simulator development.
  • Contributions to open-source projects (e.g., GitHub PRs, library maintenance).
  • Knowledge of cryptographic algorithms (e.g., Secp256k1, SHA-256) or secure coding practices.
  • Strong English reading and writing skills.

Why Join Us

  • Hardcore Challenges: Tackle complex problems in virtual machines, networking, and decentralized systems, leveraging your low-level expertise.
  • Global Impact: Build code that powers a leading Layer 1 blockchain, shaping the future of decentralized applications.
  • Learn and Grow: Work with world-class engineers and access resources to master blockchain and CKB development.
  • Fully Remote: Enjoy flexible, remote work with a globally distributed team.
  • Open-Source Culture: Amplify your impact through contributions to Nervos CKB’s open-source ecosystem.

How to Apply

Ready to push the boundaries of systems programming? Send the following to join@cryptape.com:

  • Your resume.
  • A link to your GitHub or portfolio showcasing relevant low-level projects.
  • Optional: A brief note on why you’re excited about low-level development and learning blockchain technology.

Learn More:

关于购买车位的心路历程(最后没有买)

By: chixinzei
7 November 2025 at 16:45
chixinzei:

背景介绍

  1. 曾经的百强镇(闽南),镇人口多,教育资源还可以,但是没有什么适合程序员的工作机会,18 年的时候均价 8000 元/平,买了一套靠近镇政府的拆迁小三房,目前房价看安居客大概 1 ~ 1.2 万一平左右,车位价:25 左右。
  2. 车是丰田混动,没买车位,经常停外面,因为小区旁有镇上唯一的一个商业广场,虽然不算大,但是人多,所以车子不好停,一般要花 5 ~ 10 分钟找好车位停好车,附近最近的收费公共车位也基本停满了车子,最近几年越来越不好停了(其实停都能停,就是大概 1~2 个月交警会来贴一下,我都停在巷子里居多,但是巷子也有消防通道会被贴...)
  3. 有小孩,因工作原因平时在离小镇 20 公里的地方工作和生活,只有每周五晚上回去然后周日晚上走(一礼拜 2 天),或者放寒暑假一个礼拜回去 5 天这样子。
  4. 业主出租车位价:450~500 元/月左右。
  5. 小区车位比低于 0.7 ,剩余无主车位所剩无几。 小区房价缓慢下跌中,小区房龄已有 10 年。
  6. 由于小镇以外交通不方便,所以回家经常需要开车出去玩。

算账

  1. 按照车位价格/出租车位价格,大概可以租 41 年,我用 gork 搜,告诉我这个比例很好,建议上车(这他妈的能叫很好?),用豆包搜,他告诉我这个时间 10 年是很好的价格,15 年或者以上建议租车位。
  2. 换算一下价格,以 10 年换算,车位价格 6 万,额,确认这个价格是没希望的,我综合一下目前车位比和车位情况以及手头经济,觉得 15 万一个车位,比较合适,我也愿意等。

购买契机

  1. 物业业主群最近有业主在卖车位,我打听了下,26 万好商量(微信混脸熟杀价 15 万未果)。
  2. 找物业打听其他门路,开发商手里还捏着 2 个人防车位,分别是,49 号和 50 号,以下是图片,这 2 个车位房开发商手里估计也快小 10 年了。

https://imgur.com/a/LubEkeZ 实在不知道怎么发图。。。搜了好几个帖子。

要买吗

  1. 48 号车位(也就是 49 号的左边),车主的车是 mpv 。并且那边有柱子,所以经常能看到 48 号 mpv 往 49 号车位挤过来(就如图上所示的那样)
  2. 49 号车位售价 20 万,50 号车位售价 16 万。 实际验证,48,49 停车的情况下,50 已经不能停放一辆正常 A 级油车了(开不了门)。
  3. 思考了半天,要解决这个办法,只能 2 个车位一起买,开始跟开发商晓之以情动之以理,杀价用总价 20 万买下这 2 个车位。(未果)

后续

  1. 时隔 5 个月之后,开发商经理联系我,问我现在车位有团购活动,要不要买 50 号?只要 14 万。
  2. 了解了下,49 号已经有业主交意向金了。估计也减了 2 万,差不多 18 万。
  3. 14 万买一个目前停不了我的车子的车位,果断放弃谢绝,目前也不想换成剁椒鱼头这样子的车去适配这样的车位。

总结

  1. 我不会赌开发商有良心,所以不管买 49 或者 50 ,开发商都会想办法把车位卖掉或者处理掉,故一开始就没想着单独买一个车位。
  2. 即使是这种非常烂的选择,还是有人选择高价上车,只能说,刚需还是多,颇为唏嘘,跟房子沾边的,真的没几个让老百姓省心的,大出血还要被坑是常态,他奶奶的仙人板板。
  3. 目前还是没有租车位,依然在外面随机游荡,等着下次机会出现......

Apache Doris 官方文档的中文翻译绝了。

By: gosling
7 November 2025 at 16:45
gosling:

原文:

Operators are linked to their child nodes with dashed lines. When an operator has multiple children, they are arranged vertically, representing a right-to-left order. In the example above, operator 6 (VHASH JOIN) has operator 5 (EXCHANGE) as its left child and operator 4 (EXCHANGE) as its right child.

官方文档翻译:

算子与其孩子节点之间,以虚线连接。当一个算子存在多个孩子时,孩子算子从上之下排布,表示从右至左的关系。以上面的示例为例。6 号算子 VHASH JOIN 的左孩子是 5 号 EXCHANGE 算子,右孩子是 4 号 EXCHANGE 算子。

想把我最近做的一个分布式网络爬虫系统开源,不知道有人有兴趣不

7 November 2025 at 16:41
guoguobaba:

WebRPA: 分布式网络爬虫

前言

webrpa 是一个分布式的网络爬虫系统,基于 fastapi+fastadmin 开发,通过 web api 接口发起网络爬虫服务,实现流程自动化或数据自动抓取。它包含两部分:

  • manager: 用于提供 web 服务,实现了 web server 和 websocket server 。用户通过 web api 发送请求,manager 会将查询请求通过 websocket 转发给对应的 worker ,由 worker 执行查询操作。
  • worker: 通过 websocket 和 manager 连接,用于执行网络爬虫任务,接收 manager 的 websocket 请求,并执行查询操作。worker 可以跨网络分布式部署。
graph LR
client-->manager-->worker1
manager-->worker2
manager-->workers[worker...]

主要实现的功能包括:

  • 爬虫流程自定义:通过 json 指定访问网页的各种操作,实现流程自动化,并支持通过 markdown flowchart 语法定义流程,实现在不同条件下的跳转
  • 数据自动抓取:支持通过 js 对网页数据进行处理,获取结构化的数据以及对页面某个区域进行自动截图
  • 跨网络分布式部署:worker 可以跨网络分布式部署,实现负载均衡,并可以根据查询类型不同指定专用的 worker 。
  • 代理池支持:支持自定义代理池
  • undetected chromedriver:支持无头浏览器以及绕开网站的反扒检测。支持通过 selenium 和 requests 组合查询
  • 自定义 captcha 引擎:支持对图形验证码或者其他验证码的自动识别和点击操作等操作。并增加随机扰动,避免 antibot 检测。
  • 缓存和自动重试:支持缓存和自动重试,查询失败的请求会自动在闲时重试。
  • 自动扩容:支持 k8s 部署,一键扩容。
  • 权限和审计:支持数据源权限模型,不同的用户对不同的数据源具备不同的权限,并提供审计数据。

TODO

引入 browser use ,通过 LLM 自动创建数据爬虫服务。

一个示例,爬取某网站

{
  "name": "szreorc",
  "desc": "深圳不动产查询",
  "driver": "firefox",
  "url": "",
  "debug": true,
  "window_size": "1920x1080",
  "action_timeout": 5,
  "wait_redirect": true,
  "wait_redirect_interval": 2,
  "identifier": "{username}-{BuildingName}-{UNIT_NO}",
  "credential": "{username}",
  "actions": {
    "1": {
      "desc": "确认登录",
      "action": "check_variable",
      "options": {"script": "return window.location.href;",
        "target": "^https://pnr.sz.gov.cn/d-ghrer/reroosp/ytcf"
      }
    },
    "10": {
      "desc" : "用户名密码登录",
      "action": "click",
      "timeout": 2,
      "target": ["xpath", "//a[contains(@class, 'login-tab') and normalize-space(text())='账号密码']"]
    },
    "11": {
      "desc" : "输入用户名",
      "action": "input_text",
      "target": ["xpath", "//input[@type='text' and @placeholder='请输入账号']"],
      "param": "username"
    },
    "12": {
      "desc": "增加计数",
      "action": "variable",
      "options": {"variable":"counter1","operator": "+"}
    },
    "13": {
      "desc": "检测计数",
      "action": "variable",
      "stop_on_fail": true,
      "options": {"variable":"counter1","operator": "<", "target": 2, "sleep": 2000}
    },
    "14": {
      "desc" : "输入密码",
      "action": "input_text",
      "target": ["xpath", "//input[@type='password' and @placeholder='请输入密码']"],
      "param": "password"
    },
    "15": {
      "desc": "识别 captcha",
      "action": "decode_captcha_code",
      "target": ["xpath","//div[contains(@class, 'captcha-body') and @title='点击刷新']"],
      "options": {"code_type": 11}
    },
    "16": {
      "desc": "输入 captcha",
      "action": "input_text",
      "target": ["xpath","//div[contains(@class, 'account_verifying')] //input[@type='text']"]
    },
    "17": {
      "desc": "点击登录",
      "action": "click",
      "target": ["xpath", "//button[contains(@class, 'gd-btn-primary') and contains(@class, 'gd-btn') and @type='button']//span[starts-with(text(), '登录 ')]"]
    },
    "18": {
      "desc": "继续登录",
      "action": "click",
      "target": ["xpath", "//button[.//span[contains(text(), '继续登录')]]"]
    },
    "20": {
      "desc": "确认选择",
      "action": "click",
      "timeout": 10,
      "stop_on_fail": true,
      "fail_message": "login failed",
      "options": {"set_credential": true},
      "target": ["class name", "jinruxuzhi-checkbox"]
    },
    "21": {
      "desc": "确认选择下一步",
      "action": "click",
      "target": ["class name", "jinruxuzhi-buttonOk"]
    },
    "30": {
      "desc": "展开查询类型",
      "action": "click",
      "options": {"sleep": 2},
      "target": ["xpath", "//input[@type='text' and @placeholder='请选择']"]
    },
    "31": {
      "desc": "等待下拉菜单",
      "action": "wait_element",
      "options": {"visible":  true},
      "target": ["css selector", "div.el-select-dropdown.el-popper"]
    },
    "32": {
      "desc": "选择查询类型",
      "action": "click",
      "target": ["xpath", "//li[contains(@class, 'el-select-dropdown__item') and span[text()='楼名及栋名']]"]
    },
    "33": {
      "desc" : "输入查询内容",
      "action": "input_text",
      "target": ["xpath", "//input[@type='text' and @placeholder='请输入内容']"],
      "param": "BuildingName"
    },
    "34": {
      "desc": "点击查询",
      "action": "click",
      "target": ["class name", "el-icon-search"]
    },
    "35": {
      "desc": "点击截图对象",
      "action": "click",
      "timeout": 20,
      "stop_on_fail": true,
      "fail_message":  "search failed",
      "target": ["xpath", "//div[contains(@class, 'el-dialog__wrapper')]//div[contains(@class, 'el-tabs__item') and normalize-space(text())='楼宇']"]
    },

    "40": {
      "desc": "获取数据",
      "action": "get_data",
      "options": {"script": "var table = document.querySelector(\"#pane-1 table.is-bordered.el-descriptions--mini\");\nvar fields = [\"土地坐落\", \"楼名及栋名\", \"房屋类型\", \"房屋性质\", \"房屋用途\"];\nvar result = {};\nif (table) {\n    var rows = table.querySelectorAll(\"tr.el-descriptions-row\");\n    rows.forEach(function(row) {\n        var label = row.querySelector(\"th.el-descriptions-item__label\").innerText.trim();\n        var content = row.querySelector(\"td.el-descriptions-item__content\").innerText.trim();\n        if (fields.includes(label)) {\n            result[label] = content;\n        }\n    });\n    console.log(JSON.stringify(result));\n} else {\n    console.log(\"Table not found.\");\n};\nreturn result;\n"}
    },
    "41": {
      "desc": "点击截图对象",
      "action": "click",
      "target": ["xpath", "//div[contains(@class, 'el-dialog__wrapper')]//div[contains(@class, 'el-tabs__item') and normalize-space(text())='房屋']"]
    },
    "42": {
      "desc": "下拉房屋查询",
      "action": "click",
      "target": ["css selector", "#pane-2 input.el-input__inner"]
    },
    "43": {
      "desc": "点击房屋查询",
      "action": "click",
      "target": ["xpath", "//li[contains(@class, 'el-select-dropdown__item')]//span[text()='{UNIT_NO}']"],
      "param": "UNIT_NO"
    },
    "44": {
      "desc": "截图",
      "action": "screenshot",
      "target": ["class name", "el-dialog__wrapper"],
      "options": {"visible": true}
    },
    "45": {
      "desc": "获取数据",
      "action": "get_data",
      "options": {"script": "var table = document.querySelector(\"#pane-2 table.is-bordered.el-descriptions--mini\");\nvar fields = [\"房号\", \"所在楼层\", \"建筑面积\", \"使用年限\", \"存在抵押\", \"存在查封\", \"存在异议\", \"存在居住权\"];\nvar result = {};\nif (table) {\n    var rows = table.querySelectorAll(\"tr.el-descriptions-row\");\n    rows.forEach(function(row) {\n        var label = row.querySelector(\"th.el-descriptions-item__label\").innerText.trim();\n        var content = row.querySelector(\"td.el-descriptions-item__content\").innerText.trim();\n        if (fields.includes(label)) {\n            result[label] = content;\n        }\n    });\n    console.log(JSON.stringify(result));\n} else {\n    console.log(\"Table not found.\");\n};\nreturn result;\n"}
    }
  },
  "processes": "start->1\n1(no)->10->11\n11(no)->12->13\n13(yes)->10\n11(yes)->14->15->16->17->18->20->21->30->31->32->33->34->35->40->41->42->43->44->45->end\n1(yes)->20",
  "result":["screenshot", "data"]
}

喜欢焊接/电子/diy,有什么可以做的事情?

By: Donahue
7 November 2025 at 16:37
Donahue: 闲下来的时候喜欢搞搞焊接,会用热风枪、电烙铁等工具,有什么可以玩一下的吗?(有价值或能赚点零花钱的)
因为自己身边没什么需要修理的,平时用不到这些工具。

我能想到的有闲鱼上帮别人鼠标换微动、路由器扩容硬盘、内存等,还有什么可以搞搞嘛,一方面是无聊、一方面是赚点零花钱继续折腾电子垃圾。

搞副业的,一定要小心这 1 点,否则微信封号!

By: zl1995
7 November 2025 at 16:34
zl1995:

重点:微信是社交工具,不是营销工具!

我之前也在微信上建一些群,发过广告、发过链接!

今天看了这个,确实有点后怕:

https://zhuanlan.zhihu.com/p/1967288394565517876

搞副业的,封号可能会踩坑的几点:

1 、朋友圈的营销感太离谱了;

2 、批量加好友,这个算是风险最低的,批量加好友打招呼,会触发封控,这也是比较容易解封的。

3 、频繁发外链,添加好友之后发外部链接,或者打招呼话术长期使用同一个,也很容易违规。

4 、引导付费的,付费交易千万别直接在微信上进行。

做了记录,给自己提个醒。

多年之前,我有个微信小号搞那个虚拟框架,当时也是搞着好玩,想搞一个朋友圈秒赞的功能。

想问一下 V 友们,你们微信有被封号的吗?

❌
❌