ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Badboy录制脚本网页打不开?代理、证书与兼容性排查指南

Badboy录制脚本网页打不开?代理、证书与兼容性排查指南 用badboy录制脚本的人十有八九都栽在同一个坎上——打开工具、填好网址、点下录制内置浏览器要么白屏要么一直转圈要么直接报“无法显示此页面”。更气人的是同一台机器用普通浏览器访问同一个网址一点问题没有一到badboy手里就各种打不开最后只能放弃录制手工去jmeter里拼请求。其实这个问题的坑是有迹可循的坏的不是工具本身而是它工作的独特方式对环境要求太敏感。这篇文章我会从badboy录制脚本的原理出发把打不开网页的常见原因、排查顺序、可用方案和替代路径一次说清楚希望能帮你省下折腾的时间。1. 先搞清楚badboy录制网页时到底做了什么1.1 badboy不是浏览器是“代理录制器”很多人刚接触badboy时会把它当成一个浏览器在用觉得badboy就是一个带录制功能的网页浏览器。实际上不是。badboy本质上是一个本机HTTP代理服务器它启动录制后会在你电脑的某个端口上开一个代理服务内置浏览器发出的所有请求都会先经过这个代理由代理转发到目标服务器再把响应返回给浏览器同时把整个请求过程以脚本步骤的格式记录下来。你看到的那层“浏览器”更像是一个挂在badboy代理上的展示窗口真正干活的是它背后的代理模块。所以badboy能不能打开网页取决于这条链路是不是通的本地代理有没有正常工作、系统有没有把流量导向这个代理、代理和目标服务器之间能不能正常通信、响应返回时浏览器能不能正常渲染。任何一个环节出问题表现出来的都是同一个结果——网页打不开。理解这一层非常关键排查时就不会老盯着“浏览器”本身折腾而是会把注意力放到代理链路、系统配置、证书信任这些真正的症结上去。这也是为什么我建议所有用badboy做脚本录制的人都先搞清楚这个原理。1.2 为什么网页打不开大多是环境问题而不是工具问题既然badboy是通过本地代理来抓流量那它对运行环境的要求就比普通软件苛刻得多。这里说的环境包括系统代理设置、监听端口是否空闲、IE内核的配置状态、SSL证书信任链、权限级别、杀毒软件的放行策略甚至还包括当前网络环境下DNS解析和hosts文件是否正常。用一个生活化的类比badboy是一个中间人它帮你把网页内容取回来但前提是你得告诉它门牌号代理地址和端口、门卫得让它进防火墙和权限、它取货的凭证得有效证书和登录态。任何一个条件不满足你看到的都是“包裹没收到”也就是网页打不开。而这些问题在不经过代理的普通浏览器里压根不会暴露所以才会给人“普通浏览器能开badboy打不开”的错觉。所以这篇内容的核心思路是遇到badboy录制脚本时打不开网页先按代理链路逐段检查再处理证书和权限最后考虑兼容性和替代方案。很多问题顺着这个顺序走一遍就能解决不用动不动就卸载重装。2. 常见的直接原因与排查优先级2.1 代理端口被占用、系统代理残留这是最最常见的原因没有之一。badboy每次录制时都需要在本机开一个代理端口不同版本默认端口可能不一样常见的大概在8080、9090这个区间。如果你电脑上同时装了fiddler、charles、wireshark之类的抓包工具或者之前用过jmeter自带的录制器没关这些工具很可能把8080端口占掉了。badboy启动录制时抢不到端口代理服务起不来内置浏览器自然加载不了任何页面。另一种情况更隐蔽之前某个抓包工具退出时没有还原系统代理设置系统代理还指向那个工具原先监听的端口但工具已经关了。结果就是你打开badboy录制时badboy想接管代理接管不过来或者说系统流量根本没有进badboy而是去了一个已经死掉的端口。表现形式同样是浏览器打不开网页甚至其他浏览器也会一起上不了网。排查方法很简单打开命令行执行netstat看目标端口到底被谁占着netstat -ano | findstr 8080如果这条命令有输出说明8080端口确实有程序在监听再用后面的PID去查是哪个进程tasklist /fi pid eq 12345看到是fiddler或者老死的java进程处理方法就明确了关掉占端口的程序或直接把badboy的监听端口改掉。改端口的位置一般在badboy的偏好设置里找“Proxy”相关的配置项改成8085、9090这类不冲突的端口改完再开始录制。2.2 IE内核兼容性与系统设置badboy内置浏览器是基于IE内核开发的老版本尤其明显。现在的Windows 10、Windows 11里IE本身已经被边缘化系统默认的浏览器渲染策略、安全级别、增强保护模式都会和badboy的内置浏览器起冲突。典型表现就是页面白屏、长时间加载后报错或者只有部分网页能打开、部分网页死活不行。这里有几个很实在的处理方法。第一打开Internet选项在“高级”标签页里点击“重置”把IE所有自定义设置还原到默认状态重置时建议勾上“删除个人设置”。第二在Internet选项的“安全”标签页里把目标网站地址加入受信任站点同时把安全级别调到中或中低避免IE内核因为安全策略直接拒绝加载。第三如果系统开了IE的“启用增强保护模式”建议先关掉这个模式对旧内核工具的杀伤力很大。还有一个容易被忽略的细节很多badboy教程里的截图是老版本界面但你在新系统上装badboy时最好右键exe文件进入“属性→兼容性”勾上“以兼容模式运行”选择Windows 7或Windows XP SP3再勾上“以管理员身份运行”。这一步能规避大量新系统下的兼容性问题。2.3 HTTPS证书信任问题如果你要录制的是https开头的网页打不开的原因大概率出在证书信任上。badboy在录制https站点时需要用自己的根证书做中间人解密否则浏览器只会看到加密流量页面内容无法被解析和展示。第一次录制https时badboy会尝试把它的根证书安装进系统受信任的根证书颁发机构列表这个动作如果被系统拦截、被杀毒软件阻止或者浏览器出于安全策略拒绝信任那https页面就会在握手阶段直接断掉。判断是不是这个问题有个很直观的方法同一个网站用http能打开换https就打不开或者打开后页面加载一半就报错。那就是证书没信任到位。解决方法是手动安装badboy的根证书。具体操作是打开badboy菜单里关于证书或SSL的设置项看有没有“Install Certificate”之类的选项先点击安装。如果工具内安装失败就去badboy安装目录下找证书文件一般是.crt后缀找不到就在录制的临时目录里翻一下然后手动导入打开系统的Internet选项切到“内容”标签页点“证书”按钮把badboy证书导入到“受信任的根证书颁发机构”下导入后重启badboy再试。顺便说一句这个思路跟jmeter录制https脚本是完全一样的——后面会专门讲。2.4 权限、杀软与防火墙拦截badboy需要在系统层面做几件事监听端口、修改代理设置、安装证书、读写临时文件。这些操作在非管理员权限下经常被限制表现出来就是录制时工具静默失败页面怎么都刷不出来。如果工作机有权限控制或者经常用普通用户登录建议右键badboy图标选“以管理员身份运行”这是排查时成本最低的一步。杀毒软件和防火墙也不能忽视。badboy的代理是“本机回环代理”也就是浏览器访问指向127.0.0.1的代理地址这个行为会被一部分安全软件当作可疑的本地中间人攻击拦截。表现就是badboy一开录制安全软件弹窗报警接着浏览器就再也连不上了。这类问题其实清理起来并不复杂到杀毒软件的信任区里把badboy的安装目录加进去或者到防火墙设置里放行badboy程序允许它在专用网络上通信即可。防火墙不建议直接全关容易把机器暴露在风险里加白名单才是正解。3. 从零开始的解决流程按顺序操作能解决大多数问题3.1 第一步还原代理设置并检查监听端口不管问题是什么我建议的第一个动作都是先把系统代理还原干净。按下WinR输入inetcpl.cpl回车进入Internet选项切到“连接”标签页点“局域网设置”把“为LAN使用代理服务器”前面的勾去掉如果下面“自动检测设置”没勾的话一并勾上确定保存。Windows 10和Windows 11系统里还需要到“设置→网络和Internet→代理”界面把“使用代理服务器”开关关掉。还原代理后先不急着录直接启动badboy手动填一个你确定能访问的网址比如最普通的官网首页点录制看内置浏览器能不能打开。如果还是不行进入badboy的偏好设置找到代理监听端口记下端口号然后到命令行执行netstat确认该端口有没有监听起来。如果端口是空闲的但badboy没有成功监听那就是工具本身或权限问题可以跳到下一步。这里要特别提醒一下有些教程让你“配置系统代理指向badboy”那是给外部浏览器用的方案对badboy内置浏览器来说它自己会处理代理接管不需要手动改系统代理。反而如果你手动配了还容易和badboy自己的接管逻辑打架。我的习惯是让badboy自动接管除非没办法时才手动给浏览器指代理。3.2 第二步用“管理员兼容模式”排除权限问题代理和端口检查完之后就要考虑权限和兼容性这两个老生常谈的问题了。找到badboy的安装目录右键主程序exe选择“属性”在“兼容性”标签页里先勾选“以兼容模式运行这个程序”下拉列表里选Windows 7再勾选“以管理员身份运行此程序”点击应用确定。然后重新打开badboy录制。这一招在我实际帮人排查时成功率很高尤其是在Windows 10 1809之后的版本和Windows 11上。原理不复杂badboy是老工具新系统默认的进程隔离、写入限制、TLS策略对它都不太友好兼容模式能让它在类似旧系统的规则下运行管理员权限则保证它写证书、开端口、改代理这些动作不被系统拦截。如果你的badboy是绿色解压版没有安装步骤这种右键属性设置同样有效。还有一个小细节64位系统下如果badboy运行得特别不顺可以找32位版本试一下有些场景下32位版本反而更稳定这算是个土办法但确实有人靠这个解决了问题。3.3 第三步处理HTTPS证书如果http页面能打开而https打不开或者https页面报证书错误的直接跳到证书处理这一节。先看badboy自身的设置里有没有证书安装入口点击安装。多数情况badboy会尝试把证书放入系统证书库如果弹窗里有“是/允许”之类的确认一定要点允许不要跳过。如果badboy内部安装失败就用手动导入方式。打开badboy安装目录找扩展名为.crt或.cer的文件这就是badboy的根证书。然后打开Internet选项切到“内容”标签页点击“证书”在弹出窗口里切到“受信任的根证书颁发机构”点“导入”按向导把badboy的证书文件导进去。这里有一个关键点导入位置必须选择“受信任的根证书颁发机构”如果默认选到了“个人”或其他位置浏览器依然不会信任它。导入完成后关闭badboy重新打开再录制https页面。如果目标网站还有客户端证书或其他安全策略badboy可能仍然无法打开但从录制角度来看只要握手成功、页面能渲染出来就可以继续采集脚本了。3.4 第四步绕开内置浏览器用外部浏览器继续录制如果上面几步都试过了内置浏览器还是打不开别急着放弃还有一条路可以走——绕开badboy的内置浏览器用外部浏览器配合录制。前面说过badboy本质是本地代理只要你让一个外部浏览器把代理指到badboy的监听地址流量一样会被badboy录制下来脚本照样生成。内置浏览器打不开不一定代理就没在工作可能是渲染层和系统兼容性的问题用外部浏览器就能避开这一层。具体操作是这样的先启动badboy进入录制状态确认代理监听的地址和端口一般是127.0.0.1加某个端口端口到偏好设置里查。然后打开系统的代理设置把代理服务器地址填成127.0.0.1、端口填成badboy监听的端口。也可以直接用外部浏览器比如Chrome加个代理插件或者用IE设置好代理后访问目标网址。你会发现badboy工具栏里开始出现一条条请求记录说明代理已经抓到流量了这时候你在外部浏览器里完成的每一步操作都会被录制成badboy脚本。用这个办法要注意一点外部浏览器的代理设置会在录制结束后残留录完一定要记得把系统代理或浏览器代理恢复不然其他网页全都会因为指向badboy这个死代理而打不开。我个人建议这一步只作为内置浏览器实在无法工作时的备选方案平时能直接用内置浏览器录制还是用内置浏览器毕竟它录下来的脚本坐标和事件更贴合badboy自己的逻辑。4. 网络环境排查与替代录制方案4.1 hosts、DNS与网络解析问题有些时候badboy打不开网页锅不在badboy而在目标地址本身。比如测试环境地址写的是个域名而这个域名在hosts文件里被指向了一个已经下线的IP或者网络环境切换后DNS解析出问题普通浏览器因为有缓存或者使用了其他DNS还能打开badboy内置浏览器强制走系统网络栈反而被反复触发解析错误。遇到这种情况可以先检查一下目标地址在系统层面能不能解析命令行执行ping目标域名看返回的IP是否正确如果目标在局域网内再对比一下确认是否应该走内网解析。hosts文件一般位于C:\Windows\System32\drivers\etc\hosts打开后看看有没有和目标域名相关的映射有的话确认一下IP是否还有效无效就注释掉或改成正确IP。还有一个容易被忽略的点是IPv6。部分新系统会优先尝试IPv6解析如果当前网络没有IPv6环境解析会超时普通浏览器有完善的降级机制但badboy的内置IE内核在这方面表现不佳。遇到页面长时间转圈才报错的可以在Internet选项里把IPv6相关的勾选调整一下或者直接给目标地址填IP而不是域名来验证。想验证是不是这个原因最简单的就是把URL从域名改成IP试试能打开就是解析问题再回到hosts和DNS层面处理。4.2 用jmeter自带的录制器替代badboy的完整步骤如果badboy的录制问题短时间内实在搞不定或者目标网站太新、加密太复杂badboy已经跟不上了别硬扛直接用jmeter自带的HTTP(S) Test Script Recorder替代。这个功能和badboy是同一个思路都是本地代理录制但jmeter更新更勤对现代web的兼容性更好。而且很多人在搜badboy录制脚本打不开的问题时最后都是转到jmeter录制这条路上了。jmeter录制脚本的步骤不复杂照着做就行。先打开jmeter在测试计划下添加一个线程组然后在线程组上右键添加“HTTP(S) Test Script Recorder”老版本显示为“HTTP代理服务器”。进去后设置端口默认是8888如果被占用就改一个比如9999目标控制器要选择刚才建的线程组这样录到的请求会直接落到线程组下面。再往下看有一个“HTTPS”相关的证书设置用默认的就行。点启动按钮启动后jmeter会在它的bin目录下生成一个证书文件。接下来打开浏览器把代理服务器地址设成127.0.0.1、端口设成刚才填的8888或9999然后在浏览器里操作目标系统。录制过程中jmeter会把请求逐个记录下来停止录制后线程组下面就会出现一堆HTTP采样器。这里补充一个jmeter录制https脚本的要点如果目标地址是https浏览器第一次访问时会提示证书错误因为jmeter的证书不是正经CA签发的。你需要手动信任jmeter的证书最简单的方法是启动录制后在浏览器里访问http://127.0.0.1:端口按页面提示下载并安装证书到“受信任的根证书颁发机构”。这一步和badboy处理https证书的思路完全一致本质都是信任工具自签证书。证书信任完https页面就能正常打开jmeter也能解密并记录请求。4.3 类似工具的思路迁移SAP脚本录制回放的连接排查逻辑如果你是从其他录制工具跳过来看这篇文章的比如你在SAP系统上研究脚本录制和回放功能你也会发现排查思路惊人地相似。SAP GUI的脚本录制和回放本质上也是先让工具“接管”你在界面上的操作流然后生成脚本回放时再模拟这些操作。遇到“打不开、录不上、回放失败”这类问题时大家通常怀疑的第一反应都是“工具坏了”但实际排查下来大多数问题都出在连接环境、权限配置和回放目标的状态上。比如SAP录制脚本前你要先确认当前登录的客户端版本支持脚本录制要在SAP GUI里开启脚本录制相关的设置项还要保证当前账号有对应的操作权限否则按钮就是灰的。回放的时候前提是目标系统可达、登录状态有效、界面版本和录制时一致。这些问题和badboy打不开网页的排查逻辑是同构的先查链路通不通再查工具功能有没有被限制最后查目标本身的状态。所以哪怕你对badboy已经死心了只要掌握了这套排查思路换任何录制工具都不慌。4.4 一次真实的排查记录前阵子帮一个朋友远程看问题他的环境是Windows 11badboy版本是2.1.3表现是点录制后内置浏览器立刻白屏报“页面无法显示”。我让他先确认普通浏览器能不能打开目标地址他说能。然后我按下面的顺序来排查先检查系统代理设置发现他的“使用代理服务器”开关是打开的代理地址指向127.0.0.1:8080但8080端口并没有任何程序在监听。这就找到了最直接的一个问题系统代理残留。我让他先关掉这个开关然后启动badboy看一下badboy偏好设置里的端口是多少结果是8080。再执行netstat -ano | findstr 8080发现端口其实并没有被占用。还原代理后我又让他把badboy关掉右键以管理员身份运行开始录制内置浏览器还是打不开。接着处理兼容性设成Windows 7兼容模式再按管理员运行还是不行。最后一步我让他把badboy退出在Internet选项里重置IE导入badboy自带的证书文件到受信任根证书机构再以管理员身份打开。这次测试https页面终于能正常加载了。复盘下来他这里叠加了两个问题一个是系统代理残留指向了一个死端口导致badboy接管代理时不断冲突另一个是https证书没有被系统信任所以https页面在握手阶段就全部阵亡。http页面后来能打开一部分https完全打不开。这两个问题分别处理后badboy就恢复正常了。这个案例其实很典型。排查badboy打不开网页时不要一个方法试一次就完也不用寄希望于某一个“大招”能解决所有问题。很多时候是环境里同时有几个瑕疵你解决掉一个问题减轻一点全部清掉后才会完全恢复。5. 常见问题速查与个人踩坑记录5.1 问题现象、原因与解决对照表这部分我把实际工作中比较常见的问题整理成一张速查表遇到类似现象可以直接按表排查省得满网乱找现象可能原因解决方案点录制后内置浏览器一直转圈加载不出来代理端口占用、系统代理残留还原代理设置、更换端口、关闭其他抓包工具只有https打不开http正常根证书未安装或未信任安装badboy根证书到受信任的根证书颁发机构一点录制就崩溃或闪退权限不足、和系统不兼容管理员身份运行、兼容模式选Windows 7浏览器提示“代理服务器无响应”代理端口被其他软件占用netstat查端口、结束后台进程或换端口本机浏览器可以打开但badboy不行IE设置异常、安全策略阻断重置IE、加受信任站点、关闭增强保护模式页面打开但请求没有记录代理没有接管流量检查系统代理是否指向badboy监听端口录制结束后其他浏览器都上不了网系统代理没还原关掉“为LAN使用代理服务器”或系统代理开关这张表不能覆盖所有问题但覆盖了大多数badboy录制脚本打不开网页的场景。如果表里的方案都试过还是不行再看一下badboy的版本。一些特别老的版本在现在的网页加密和TLS协议下已经无能为力这不是你操作的问题是工具天花板到了。5.2 个人踩坑记录与几个小技巧用badboy这些年我总结了几条比较实在的经验可能外面教程里不太会写但对日常操作帮助很大。第一录制前一定先把其他代理类工具全部退出包括fiddler、charles、老版本jmeter的录制器、任何系统代理管理工具。坏消息是这些东西经常在后台驻留退出主界面不代表进程结束需要在任务管理器里确认进程已经消失。第二坏消息是badboy对现代网站的支持确实越来越吃力如果你录的页面大量使用WebSocket、SPA前端路由、强加密、双因素认证badboy就算能打开页面录下来的脚本也经常是残缺的。这种场景我不会在badboy上耗太久直接转到jmeter自带的录制器或者干脆手写脚本更高效。第三录完脚本后第一时间还原系统代理设置。我见过太多同事、朋友因为忘了这一步导致电脑所有浏览器上都不了网最后排查一圈才发现是坏蛋竟然是自己昨晚录脚本留下的代理。养成习惯录完就把代理关掉或者至少确认一下系统代理开关是关闭的。第四如果badboy在一台机器上怎么弄都不行而另一个同事的电脑上同样版本却一切正常别怀疑自己大概率是系统环境和权限配置的差异。可以试着换一台机器验证有时候花两小时调环境不如直接换台环境干净一点的机器录制录完再把脚本复制回来。工具是为人服务的别被工具绑死。我在实际使用中的体会是badboy打不开网页本质上不是badboy单方面的问题而是它在跟一个错综复杂的网络环境协作时遇到了阻碍。你只要养成“代理影响面大优先排查HTTPS无小事证书要先行权限是整个链条的底线”这三个心智模型绝大多数问题都能在十分钟内定位到方向。希望这篇文章能让你少走些弯路。
返回列表