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

推荐订阅源

L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
博客园 - 司徒正美
罗磊的独立博客
D
Docker
Last Week in AI
Last Week in AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
V
V2EX
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
MyScale Blog
MyScale Blog
V
Visual Studio Blog
博客园 - 叶小钗
B
Blog RSS Feed
A
About on SuperTechFans
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
P
Proofpoint News Feed

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
我的开源项目分享-基于SharpBrowser二次开发的定制浏览器,过...
良村 · 2026-05-08 · via 博客园_首页

为什么要定制浏览器

客户的管理系统要求加强身份验证,仅允许固定的电脑登录。针对这个需求,考虑用定制的浏览器,为请求加上设备ID请求头,然后在管理系统中验证设备ID,没有登记过的设备ID不允许访问。

选型

问了几个AI,推荐SharpBrowser,查看项目最近更新时间是去年,自我介绍说是目前速度最快、功能最完备的开源C# 网页浏览器。实际用下来发现这个牛吹得有点大,开发过程中填坑无数,下面是开发日志记录。

开发说明

本项目基于SharpBrowser(最近更新日期为2025年4月),使用下来发现有不少错误,还缺乏一些基本功能,列举如下:

  1. 不支持alert、prompt、confirm,一旦网页调用这些导致程序崩溃。
  2. 没有处理window.open,导致window.open没有返回值导致脚本运行出错。
  3. 下载页面有错,没有显示文件的下载日期,排序也有问题,没有限制下载列表数量(数量多时会导致出错)。
  4. 其它若干小错误,这里不一一列举。

错误修正

  1. 调整setup安装包脚本的绝对路径,改用相对路径。
  2. 修正放在bin目录下的storage,改为放在代码区,改名为inbuilt(内嵌文件)。
  3. 修正下载页面日期时间显示不正确的错误。
  4. 修正执行window.open也弹出标签页,但window.open无返回值,导致js程序出错的问题。

新增功能

  1. 本地化调整,翻译英文界面为中文。
  2. 下载页面增加“打开文件所在的文件夹”功能。
  3. 增加对公司(文双软件)打印管理器的支持(自定义协议),点击自定义协议的链接按钮,调用公司的打印管理器。
  4. 增加设备ID功能,在每个请求头中加上设备ID,可用于补充安全认证,可配合服务器端进行签名认证。
  5. 增加设置页面,提供主页设置,设备ID查看和设备密钥设置(用于签名认证)。
  6. 针对Cef无法播放H.264的问题,改造选择上传文件功能,当选择mp4等不支持的视频时,自动转换成webm格式,取代原mp4视频。
  7. 补上alert、prompt、confirm支持。

构建说明

  1. 代码不含转换视频的ffmpeg.exe文件,请在官网自行下载,地址: https://www.gyan.dev/ffmpeg/builds/#release-builds
  2. 下载后的ffmpeg.exe放到src\bin\net8.0-windows\下即可。
  3. 安装包工具Inno Setup version 6.7.1,默认不含中文语言包,请在官网单独下载ChineseSimplified.isl,放到安装目录的Languages子目录下。

开发感想

cef不支持H.264是个硬伤,有资源时考虑重新编译cef支持H.264,目前没有符合编译要求的高配置设备(据说编译过程也很漫长费力)。

开源项目地址

https://gitee.com/eameta/sharpbrowser/