【问题标题】:How to get router informations using cURL and PHP如何使用 cURL 和 PHP 获取路由器信息
【发布时间】:2014-08-09 00:49:26
【问题描述】:

我正在为我的路由器构建一个 Web 应用程序,这将是我的学士论文。

糟糕的是,我无法使用我的 cURL 函数显示我的路由器信息,因为我收到错误的路由器用户名和密码错误。我完全没有发现任何问题:

cURL 函数:

function myCurl($url, $post="")
{
    global $status;



$header = 'Authorization: Basic YWRtaW46YWRtaW4=';

$cookiepath_tmp = "c:/xampp/htdocs/wifi/cookie.txt";

$resp = array();

$ch = curl_init();

curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch,CURLOPT_URL, trim($url));
curl_setopt($ch,CURLOPT_REFERER, trim($url));
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookiepath_tmp);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookiepath_tmp);
curl_setopt($ch,CURLOPT_COOKIESESSION, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_MAXREDIRS, 10);
curl_setopt($ch,CURLOPT_ENCODING, "");
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
#curl_setopt($ch,CURLOPT_AUTOREFERER, true);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch,CURLOPT_TIMEOUT, 15);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch,CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_HTTPHEADER, array( 'Expect:' ) );
curl_setopt($ch,CURLOPT_VERBOSE, 1);
#curl_setopt($ch,CURLOPT_FAILONERROR, true);

if($post) { curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$post); }

$returned = curl_exec($ch);
$resp['returned'] = $returned;

$status=curl_getinfo($ch);
$resp['status'] = $status;
curl_close($ch);


return $resp;
}

我正在尝试使用 PHP 显示信息:

PHP 代码:

<?php echo $success_msg; 
        $url = "http://192.168.0.1/session.cgi";
        $post = "REPORT_METHOD=xml&ACTION=login_plaintext&USER=admin&PASSWD=admin&CAPTCHA=";
        $data = myCurl($url, $post);

        #$url = "http://192.168.0.1/st_log.php";
        #$data = myCurl($url);
        echo $data['returned'];

        ?>

错误是:

Username or Password is incorrect.

但是,用户名和密码admin是正确的。

我已将以下代码添加到 myCurl 函数中,但仍然无法正常工作:

$header = 'Authorization: Basic YWRtaW46YWRtaW4=';
YWRtaW46YWRtaW4= is the encoded username:password in Base64.

最后编辑: 我将 CURLOPT_HEADER 设置为 true,然后显示以下文本:

HTTP/1.1 501 Not Implemented Server: Router Webserver Connection: close WWW-Authenticate: Basic realm="TP-LINK Wireless Lite N Router WR740N" Content-Type: text/html 

有什么解决办法吗?

非常感谢您的帮助!谢谢!

【问题讨论】:

    标签: php curl wifi router


    【解决方案1】:

    我不知道您的路由器(供应商/型号)是什么,但其中大多数使用HTTP basic authentication。而且,当身份验证为空或错误时,您会得到一个HTTP 401 error: Unauthorized,它可能对应于您的错误字符串。

    所以你应该尝试插入一个HTTP authorization header in the cURL request

    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    

    【讨论】:

    • 我已经添加了授权用户名:Base64编码的密码,但仍然不起作用。
    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多