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

如何用PHP Curl实现设备Web表单登录并获取CONTROL.HTM数据?

PHP cURL模拟无用户名Web登录实现方案

实现步骤

  1. 获取登录页面的Nonce值:先请求目标设备的登录页面,提取隐藏字段pA的初始值(即JS里的nonce)。
  2. 计算加密后的密码哈希:按照页面JS逻辑,将nonce与实际密码拼接后做MD5哈希,得到提交用的pA值。
  3. 构造POST请求参数:根据页面表单结构,提交两个空的q参数(对应密码输入框和提交按钮的name),加上计算后的pA值。
  4. 发起请求并保持会话:用cURL的cookie持久化功能维持会话状态,获取登录后的响应页面数据。

完整代码示例

<?php
// 配置参数
$targetUrl = 'http://10.168.168.144/CONTROL.HTM';
$password = '你的实际密码'; // 替换为设备登录密码
$cookieFile = tempnam(sys_get_temp_dir(), 'cookie_'); // 临时cookie文件

// 初始化cURL
$ch = curl_init();

// 第一步:GET登录页面,提取nonce值
curl_setopt($ch, CURLOPT_URL, $targetUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // 保存cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); // 读取cookie
$loginPage = curl_exec($ch);

// 解析页面获取pA的nonce值(两种方式可选)
// 方式1:DOM解析(更健壮)
$dom = new DOMDocument();
@$dom->loadHTML($loginPage);
$xpath = new DOMXPath($dom);
$nonceNode = $xpath->query('//input[@id="hpsw_id"]')->item(0);
$nonce = $nonceNode ? $nonceNode->getAttribute('value') : '';

// 方式2:正则匹配(页面结构简单时用)
// preg_match('/<input id="hpsw_id" type="hidden" name="pA" value="([^"]+)"/', $loginPage, $matches);
// $nonce = $matches[1] ?? '';

if (empty($nonce)) {
    die('无法获取Nonce值,请检查页面结构是否变化');
}

// 第二步:计算MD5哈希
$encryptedPsw = md5($nonce . $password);

// 第三步:构造POST参数
$postData = http_build_query([
    'q' => ['', ''], // 两个空q参数,对应密码框和提交按钮
    'pA' => $encryptedPsw
]);

// 第四步:发起POST请求
curl_setopt($ch, CURLOPT_URL, $targetUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自动处理登录重定向
$response = curl_exec($ch);

// 检查请求错误
if (curl_errno($ch)) {
    die('cURL请求错误:' . curl_error($ch));
}

// 输出或处理响应内容
echo $response;

// 清理资源
curl_close($ch);
unlink($cookieFile);
?>

注意事项

  • 替换代码中的$password为设备实际登录密码。
  • 若设备登录后有跳转,确保开启CURLOPT_FOLLOWLOCATION。
  • 页面结构变化时,需调整Nonce值的解析逻辑。
  • 部分设备可能校验User-Agent,可添加curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/115.0');模拟浏览器请求。

内容的提问来源于stack exchange,提问作者Egor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:25:54