Я хотел бы получить доступ к моему маршрутизатору (Speedport w723v) с помощью php-скрипта.
На самом деле мне нужен только cookie, который будет добавлен в URI после успешного входа в систему, например: http://speedport.ip/auth/hcti_startseite.php? Cookie = SessionID_R3, BxXQc7WSbiS
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://speedport.ip/");
curl_setopt( $ch, CURLOPT_REFERER, "https://speedport.ip/");
curl_setopt( $ch, CURLOPT_COOKIEFILE, "SessionID.txt");
curl_setopt( $ch, CURLOPT_COOKIEJAR, "SessionID.txt"); # SAME cookiefile.
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt( $ch, CURLOPT_POSTFIELDS, "Password=PASSWORD&Username=USERNAME");
curl_setopt( $ch, CURLOPT_HEADER, 1);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$getinfo = curl_getinfo($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
var_dump($data);
var_dump($getinfo);
var_dump($errno);
var_dump($error);
curl_close ($ch);
Пароль и имя пользователя в порядке, результат, выброшенный скриптом выше, выглядит следующим образом:
string(145) "HTTP/1.1 302
CACHE-CONTROL: no-cache
Content-Type: text/html
LOCATION: https://speedport.ip/pub/msgerrcode.php?cookie=
Content-Length: 0
"
array(26) {
["url"]=>
string(21) "https://speedport.ip/"
["content_type"]=>
string(9) "text/html"
["http_code"]=>
int(302)
["header_size"]=>
int(145)
["request_size"]=>
int(187)
["filetime"]=>
int(-1)
["ssl_verify_result"]=>
int(20)
["redirect_count"]=>
int(0)
["total_time"]=>
float(0.53)
["namelookup_time"]=>
float(0)
["connect_time"]=>
float(0)
["pretransfer_time"]=>
float(0.53)
["size_upload"]=>
float(34)
["size_download"]=>
float(0)
["speed_download"]=>
float(0)
["speed_upload"]=>
float(64)
["download_content_length"]=>
float(0)
["upload_content_length"]=>
float(34)
["starttransfer_time"]=>
float(0.53)
["redirect_time"]=>
float(0)
["redirect_url"]=>
string(47) "https://speedport.ip/pub/msgerrcode.php?cookie="
["primary_ip"]=>
string(12) "192.168.100.1"
["certinfo"]=>
array(0) {
}
["primary_port"]=>
int(443)
["local_ip"]=>
string(14) "192.168.100.106"
["local_port"]=>
int(50900)
}
int(0)
string(0) ""
Файл cookie (SessionID.txt) остается пустым; Я пробовал все возможные пути.
Я заметил перенаправление, но понятия не имею, как продолжить.
Что я делаю не так?
Пароль должен быть закодирован в base64, URI ошибочен - это в конечном итоге удалось:
$ch = curl_init();
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt( $ch, CURLOPT_URL, "https://speedport.ip/index/login.cgi");
curl_setopt( $ch, CURLOPT_REFERER, "https://speedport.ip/index/login.cgi");
curl_setopt( $ch, CURLOPT_COOKIESESSION, true );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $filename);
curl_setopt( $ch, CURLOPT_COOKIEJAR, $filename);
curl_setopt( $ch, CURLOPT_POST, TRUE);
curl_setopt( $ch, CURLOPT_POSTFIELDS, "Password=".base64_encode(PASSWORD)."&Username=admin");
curl_setopt( $ch, CURLOPT_HEADER, 1);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec( $ch);
Примечание. Имя пользователя всегда "admin".
Теперь вы можете повторно подключать или читать данные, такие как звонящие...
Не забудьте снова выйти из системы с помощью SessionID, иначе вам нужно будет подождать несколько минут, прежде чем вы сможете войти на https://speedport.ip
curl_setopt( $ch, CURLOPT_URL, "https://speedport.ip/auth/logout.cgi?cookie=SessionID_R3,".$sid);
$data .= curl_exec( $ch);
Надеюсь, это поможет другим. В W723V Type A (Huawei) ничего не нашли в Интернете. BTW: Была очень (!) Плохая, долгая ночь с JDownloader и распространяемой вместе с ней вредоносной программой. Больше не рекомендую.