За последние 24 часа нас посетили 21932 программиста и 1106 роботов. Сейчас ищет 441 программист ...

Как написать скрипт для автоматического входа на сайт роутера?

Тема в разделе "PHP для новичков", создана пользователем php4, 20 июн 2017.

  1. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Возможно ли на PHP написать какой-нибудь скрипт для входа на сайт роутера (192.168.1.1), ввод логина и пароля: admin, и нажатие определённой button-кнопки? Слышал через Curl можно как-то, может кто подскажет образец кода?

    [​IMG]
    [​IMG]

    P.S. роутер Sagemcom (Ростелеком).
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Ну...чисто технически ты можешь свой 192.168.1.1 роутера вытащить наружу мордой. Можешь даже доменное имя к нему прикрутить. И все через настройки самого роутера. Но будь готов, что все может пойти не так и ты будешь сильно опечален.
     
  3. servitpol

    servitpol Новичок

    С нами с:
    17 авг 2016
    Сообщения:
    63
    Симпатии:
    3
    PHP:
    1. $login_url = 'http://192.168.1.1';
    2. $login = "ваш логин";
    3. $pass = "ваш пас";
    4.  
    5. $ch = curl_init();
    6. curl_setopt($ch, CURLOPT_URL,$login_url);
    7. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    9.  
    10. $postLoginFields = array();
    11. $postLoginFields['login'] = $login;  //$postLoginFields['login'] -  login - это name инпута login
    12. $postLoginFields['pass'] = $pass; //$postLoginFields['pass'] - pass это name инпута pass
    13.  
    14. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postLoginFields));
    15.  
    16. $output = curl_exec($ch); //здесь получите страницу после аутентификации
    17.        
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    А теперь выгрузи это на удаленный сервер и запусти. Удивишься.
     
  5. servitpol

    servitpol Новичок

    С нами с:
    17 авг 2016
    Сообщения:
    63
    Симпатии:
    3
    Слушай, ну я ж думаю он не дурак. Понимает что запускать нужно только с локалхоста?
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Тогда какой смысл в этом скрипте, если в локальной сети я могу просто постучаться на 192.168.1.1 напрямую и роутер мне ответит сам? Зачем, будучи в одной подсети, городить прокси между узлами?
     
    denis01 нравится это.
  7. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    @servitpol, попробовал на Open Server - пустая страница (расширение curl включил). Но в чём больше прикол, сама форма авторизации использует метод POST, а при входе только GET запросы, в которых логин и пароль не хранится.
    Код формы:
    HTML:
    1. <!DOCTYPE HTML>
    2. <title>Router</title>
    3. <meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
    4. <meta http-equiv=Content-Type content="text/html; charset=UTF-8">
    5. <link rel="stylesheet" href="reset.css">
    6. <link rel="stylesheet" href="base.css">
    7. <link rel="stylesheet" href="style.css">
    8. <script language=javascript>
    9. function onlogin() {
    10.   if(document.test.username.value.length <= 0) {
    11.   alert("Пожалуйста, введите имя пользователя!");
    12.   document.test.username.focus();
    13.   return false;
    14.  }
    15.  if(document.test.password.value.length <= 0) {
    16.   alert("Пожалуйста, введите пароль!");
    17.   document.test.password.focus();
    18.   return false;
    19.  }
    20.  return true;
    21. }
    22. function frmLoad() {
    23.    document.test.username.focus();
    24. }
    25. </head>
    26. <body onload=frmLoad() id="login_body">
    27. <form action="login.cgi" method=POST name="test" autocomplete="off" >
    28. <div class="loginBox">
    29. <div class="login_left_bg"></div>
    30. <div class="loginCtr">
    31.   <h2>Авторизация</h2>
    32.   <table>
    33.    <tr>
    34.     <td>Имя пользователя:</td>
    35.     <td><input type="text" id="username" name="username" maxlength="64"></td>
    36.    </tr>
    37.    <tr>
    38.     <td>Пароль:</td>
    39.     <td><input name="password" id="password" type="password" maxlength="64"></td>
    40.    </tr>
    41.   </table>
    42.   <div class="login_btn">
    43.    <input id="loginBtn" onclick="return onlogin()" type="submit" value="Войти" class="link_bg">
    44.    <input id="rewBtn" type="reset" value="Сбросить" class="link_bg" autocomplete="off" >
    45.    <input type="hidden" name="submit.htm?login.htm" value="Send">
    46.   </div>
    47. </div>
    48. <div class="login_right_bg"></div>
    49. </div>
    50. </form>
    51. </body>
    52. </html>
    [​IMG]
    --- Добавлено ---
    Хочу упростить жизнь. Чуть ли не каждый день приходится заходить в настройки роутера, каждый раз вводить логин и пароль (пусть они и сохранены в браузере), вот я и подумал, нельзя ли через скрипт сразу авторизовываться, чтобы лишние 5 сек. не терять. Да и ради практики, интересно.
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Чувак, ты из скрипта "авторизуешь" скрипт, а потом войдёшь в браузер - придётся опять пароль вводить. Поскольку когда заходит туда скрипт, клиент он, а не браузер, в браузер никакие куки, флаги и т.п. не идут.
     
  9. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    А
    А на чём тогда такое можно реализовать? Уже просто ради интереса. JavaScript?
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    В виде расширения браузера. Но такие уже есть, в принципе. Last Pass какой-нибудь
    --- Добавлено ---
    [offtop]
    Интересно, а нафига тебе каждый день входить в настройки роутера? Я туда вхожу изредка, пароль поменять :)
    [/offtop]
     
  11. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    чтоб переподключаться для смены ip. Провайдер (днище) даёт 2 диапазона на выбор (меняются раз в сутки) , и на одном из-них очень медленная скорость. С ними связывался, сказали, что либо - покупайте статический ip, либо пока что никак. (неполадки на сервере).
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну у меня обязательно статический IP, без этого работать невозможно
     
  13. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Почему?
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Иногда, к примеру, невозможно понять, почему не работает твоя программа именно на хостинге клиента, а на локалке и тестовом сервере всё в порядке. Тогда можно вставить отладочные инструкции, которые исполняются только для твоего ip, а остальные посетители видят сайт нормально. Или, к примеру, запустить отладочный плагин фреймворка именно для твоего ip, и увидеть в чём дело. Ещё некоторые хостинги ставят ограничение по IP.
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    То же самое можно делать для учетной записи, используя ник в качестве идентификатора.
    Либо проксироваться через VPNку на своей VPSке, если хочешь привязываться к IP, ну там..я ж понимаю, что xdebug тот же без IP не прокинуть и все такое.
    Так-то дело личное, конечно, но я б статику домой цеплять не стал.