我有一台Actiontec V1000H路由器。我想使用脚本访问其“WAN以太网状态”页面(它将提取发送和接收的数据包计数以进行绘图)。在浏览器中,此URL工作正常:
http://192.168.1.1/modemstatus_wanethstatus.html
但是,当我在我的脚本中使用该URL时,我几乎总是得到主屏幕。 (它很少见。)这是我的剧本:
$wanStatusUrl = "http://192.168.1.1/modemstatus_wanethstatus.html";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wanStatusUrl);
curl_setopt($ch, CURLOPT_USERPWD, 'admin:myPassword');
$output = curl_exec($ch);
curl_close($ch);
我需要访问modemstatus_wanethstatus.html页面的帮助。我认为这个问题是由于调制解调器的一些特殊情况造成的。
答案 0 :(得分:0)
使用此选项以便curl将html源代码作为回复返回到$output
:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
答案 1 :(得分:0)
主屏幕有一个“登录”按钮,在访问WAN状态屏幕之前添加相应的按钮使其工作。所以,为了记录:
// login
$loginUrl = 'http://192.168.1.1/login.cgi?inputUserName=admin&inputPassword=myPassword¬hankyou=1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_exec($ch);
curl_close($ch);
// get status page
$wanStatusUrl = "http://192.168.1.1/modemstatus_wanethstatus.html";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wanStatusUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // so curl_exec returns the response
$responseText = curl_exec($ch);
curl_close($ch);
// print $responseText; // contains wanEthStatus_ReceivedPackets and wanEthStatus_SendPackets
// get the two packet counts ... wanEthStatus_ReceivedPackets and wanEthStatus_SendPackets
preg_match( "/wanEthStatus_ReceivedPackets.*?\'(\d+)\';.*?\'(\d+)\';.*?wanEthStatus_TimeSpan/s", $responseText, $matches );
print_r( $matches );
“人类总是在最后赢得胜利。”