You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在使用PowerShell的Invoke-WebRequest登录路由器Web配置时读取POST请求?

如何在使用PowerShell的Invoke-WebRequest登录路由器Web配置时读取POST请求?

看起来你遇到的问题是抓包没找到登录对应的POST请求里的密码字段,这种情况在很多路由器上很常见,我来给你一步步梳理解决方法:

一、先确认你抓包的时机是否正确

很多路由器的登录请求是点击登录按钮之后才会触发的,而不是加载登录页时就发送。你需要这样操作:

  • 打开浏览器开发者工具(F12),切换到「Network」标签
  • 勾选「Preserve log」(防止页面跳转后请求被清空)
  • 刷新路由器登录页,输入用户名和密码,点击「登录」按钮
  • 此时盯着Network列表,找点击登录后新出现的POST请求,这才是真正的登录请求,你提到的[cgi/info]大概率是获取设备状态的前置请求,不是登录用的

二、查看登录POST请求的具体参数

找到目标POST请求后,点击它查看详情:

  • 如果是表单提交,看「Form Data」标签,里面会列出所有提交的键值对,比如username=admin、passwd=xxx这类,这里的键名就是你需要的变量名(注意有些路由器会把密码字段命名成pwd、login_password甚至加密后的奇怪名称)
  • 如果是JSON格式的请求,看「Payload」标签,同样找用户名和密码对应的字段

三、处理路由器的隐藏验证字段

不少路由器会在登录页生成隐藏的验证字段(比如CSRF token、session ID),登录时必须和账号密码一起提交,否则会被拒绝。这时候你需要先用PowerShell获取登录页内容,提取这些字段:

# 先获取登录页,保存Session和页面内容
$loginPage = Invoke-WebRequest -Uri "http://你的路由器IP" -SessionVariable routerSession

# 从页面中提取隐藏字段(比如token,这里需要根据实际页面的HTML调整选择器)
$token = $loginPage.ParsedHtml.querySelector('input[name="csrf_token"]').value

四、构造完整的登录POST请求

拿到所有需要的字段后,就可以构造请求了:

# 构造提交的表单数据
$formData = @{
    username = "你的用户名"
    passwd = "你的密码"
    csrf_token = $token # 如果有隐藏字段就加上
}

# 发送登录请求
$loginResponse = Invoke-WebRequest -Uri "http://你的路由器IP/cgi/login" -Method Post -Body $formData -WebSession $routerSession

# 验证是否登录成功:比如检查响应内容里是否包含"登录成功"或者管理页的特征内容
if ($loginResponse.Content -match "管理页面") {
    Write-Host "登录成功!"
} else {
    Write-Host "登录失败,请检查参数"
}

五、特殊情况:加密的密码字段

如果发现密码字段是加密后的字符串,那说明路由器在前端对密码做了加密处理。这时候你需要:

  • 查看登录页的JS代码,找到加密逻辑(比如用MD5、AES或者自定义算法)
  • 在PowerShell里实现同样的加密逻辑,把明文密码加密后再提交

备注:内容来源于stack exchange,提问作者SLEStyler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:18:13