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

推荐订阅源

C
CERT Recently Published Vulnerability Notes
K
Kaspersky official blog
S
Schneier on Security
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
T
Tor Project blog
T
Tenable Blog
The Register - Security
The Register - Security
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
H
Help Net Security
博客园_首页
I
Intezer
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Project Zero
Project Zero
Recorded Future
Recorded Future
C
Cybersecurity and Infrastructure Security Agency CISA
Vercel News
Vercel News
A
Arctic Wolf
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Know Your Adversary
Know Your Adversary
P
Privacy & Cybersecurity Law Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Proofpoint News Feed
P
Privacy International News Feed
G
GRAHAM CLULEY
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Simon Willison's Weblog
Simon Willison's Weblog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
T
The Exploit Database - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Security Latest
Security Latest
Cyberwarzone
Cyberwarzone
L
Lohrmann on Cybersecurity
C
Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
AWS News Blog
AWS News Blog

博客园 - 良村

元数据驱动开发 - 面向对象编程思想的补充 用ANTLR实现表达式词法和语法分析器 AI是什么 现阶段AI编程无法取代程序员 用zrender实现工作流图形化设计(附范例代码) 特殊字符
导致的Javascript脚本异常 不同寻常的浏览器请求无响应错误 进销存管理中对红冲处理的误区 进销存管理中负库存产生的原因以及对应措施 打造自己的Html文本编辑控件 探讨对Web控件的异常处理 看了一篇不错的文章 - 使用 UTF-8 对 XML 文档进行编码 Ajax学习笔记(2) - 一定要用XML吗? Ajax 学习笔记(1) ASP.NET控件编写日记-当心“用过的控件”! ASP.NET控件编写心得总结- 以后会写详细一点 CodeDom.CodeArrayCreateExpression不能生成多维数组的创建表达式 用NAnt编译带有资源文件(*.resx,*.bmp,*.gif等)的C#项目 网址收藏 C#实现Singleton的两种方法的比较 发现Maxthon(myIE2)浏览器处理javascript脚本时的奇怪现象 - 良村 - 博客园 页面缓冲与Asp.Net的性能优化(设置Page.Buffer属性) 如何使用AdminScripts脚本创建虚拟目录 采用HttpModules来重写URLs(实践篇)
我的开源项目分享-基于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/