如何从Windows 10本地文件获取Microsoft Edge的User-Agent
获取Windows 10本地Microsoft Edge的User-Agent(Perl实现)
核心逻辑
Edge的User-Agent并不直接存储在某个本地文件中,而是由浏览器版本号、系统信息等固定格式拼接生成的。我们只需从本地获取Edge的精准版本号,再结合标准格式就能生成和实际浏览器完全一致的User-Agent。
步骤1:获取Edge版本号
方法一:读取注册表(推荐)
Windows系统中,Edge的版本信息存在注册表指定路径下:
- 稳定版:
HKEY_CURRENT_USER\Software\Microsoft\Edge\BLBeacon中的version键值 - 开发者/测试版:对应路径替换为
EdgeDev或EdgeBeta
Perl可通过Win32::TieRegistry模块读取:
use Win32::TieRegistry(Delimiter => '/'); # 读取稳定版Edge版本号 my $reg_path = 'HKEY_CURRENT_USER/Software/Microsoft/Edge/BLBeacon/'; my $version = $Registry->{$reg_path}{'version'}; die "无法获取Edge版本号" unless $version;
方法二:读取安装目录的版本文件
Edge默认安装路径为C:\Program Files (x86)\Microsoft\Edge\Application\,目录下的版本号文件夹内有纯文本的version文件,直接存储版本号:
use File::Glob qw(bsd_glob); my $edge_path = 'C:/Program Files (x86)/Microsoft/Edge/Application/'; my @version_dirs = bsd_glob("$edge_path[0-9]*"); die "未找到Edge安装目录" unless @version_dirs; # 取最新版本目录(按名称排序取最后一个) my $latest_version_dir = pop @version_dirs; my $version_file = "$latest_version_dir/version"; open my $fh, '<', $version_file or die "无法读取版本文件:$!"; my $version = <$fh>; chomp $version; close $fh;
步骤2:拼接标准User-Agent
Edge的User-Agent固定格式为:
Mozilla/5.0 (Windows NT 10.0; [系统架构]) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/[Chrome内核版本] Safari/537.36 Edg/[Edge版本号]
其中Chrome内核版本和Edge版本号的前三位完全一致,系统架构可通过环境变量判断。
Perl拼接代码:
# 判断系统架构(x64或x86) my $arch = (length($ENV{PROCESSOR_ARCHITECTURE}) == 8) ? 'Win64; x64' : 'WOW64'; # 提取Chrome内核版本(取Edge版本号前三位) my ($chrome_version) = $version =~ /^(\d+\.\d+\.\d+)/; # 生成最终User-Agent my $user_agent = "Mozilla/5.0 (Windows NT 10.0; $arch) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/$chrome_version Safari/537.36 Edg/$version"; print "匹配实际的Edge User-Agent:$user_agent\n";
验证方式
生成的结果可和Edge浏览器about:version页面显示的User-Agent对比,确保完全一致。
内容的提问来源于stack exchange,提问作者elemo
相关产品推荐
相关产品推荐

