Невозможно отправить форму angular с помощью сканера goutte php - PullRequest
0 голосов
/ 21 февраля 2020

Во-первых, я не пытаюсь создать спам-бота или что-то незаконное. Таким образом, у меня есть небольшой бизнес по продаже баланса телефона, и моя цель - облегчить его работу для сотрудников и автоматизировать процесс пополнения баланса клиента. И я попытался сделать веб-приложение с формой для моих сотрудников, чтобы просто заполнить номер телефона и сумму баланса для пополнения с помощью Laravel.

Я попытался запросить API, чтобы я мог просто используйте Ax ios или jQuery Ajax, чтобы сделать запрос на публикацию, но они сказали, что у них нет API для этого. В настоящее время я попытался использовать пакет Goutte php -scraper для сканирования страницы, чтобы автоматизировать вход в систему на панели посредника и пополнить баланс телефона. Итак, вот код, который я пробовал до сих пор

$client = new \Goutte\Client();
$crawler = $client->request('GET', 'http://www.phonereseller.com');
$form = $crawler->selectButton('Login')->form();
$formValues = array('Username' => $username, 'Password' => $password);
$crawler = $client->submit($form, $formValues)

, когда я попытался выдать $client я просто получаю, что в доступе отказано, результат дампа ниже

<body>
  <div id="mainholder" class="block-login wow fadeIn" data-wow-duration="2s">
    <form id="formLogin" class="form-login" action="/Account" method="POST" autocomplete="off">
      <div class="box-lang">
        <div class="dropdown">
          <span class="btn dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
            <span class="flag flag-en"/>
              <span id="lblLanguage">English</span>
              <span class="caret"/>
            </span>
          </span>
          <ul class="dropdown-menu" aria-labelledby="langList" id="language-ddl">
            <input id="redirectUrl" name="redirectUrl" type="hidden" value="http://www.phonereseller.com/Account?url=http:%2F%2Fwww.phonereseller.com%2F"/>
            <li>
              <a href="/API/Account/SetLanguage?langtag=zh" class="changelanguage-link" ng-show="currentLang != 'zh'">
              <span class="flag flag-zh"/>中文
                </a>
              </li>
            </ul>
          </div>
        </div>

        <h1 class="title login-text">Login</h1>
        <div class="rowlg msg-error" id="errmsg">
          <span>Access denied</span>
        </div>

        <div class="rowlg">
          <input class="txt" data-val="true" data-val-required="Username is required" id="Username" name="Username" placeholder="Username" required="requi ▶
          <i class="icon-user"/>
        </div>

        <div class="rowlg">
          <input class="txt" data-val="true" data-val-required="Password is required" id="Password" name="Password" placeholder="Password" required="requi ▶
          <i class="icon-lock"/>
        </div>

        <div class="list-button">
          <input type="submit" class="btnLogin" value="Login" id="btnLogin" tabindex="5"/>
        </div>

        <input name="code" id="code" type="hidden" value="7645"/>
        <input id="detecas-analysis" name="detecas-analysis" value="{}" type="hidden"/>
      </form>
    </div>
  </body>

<script src="/bundle/js/signin?v=WGaSzzsFcGlG66dFn7aGXH8Rm7UGIXCOnPoGVarzyoE1"/>&#13;

        <script type="text/javascript"><![CDATA[
            (function ($) {
                var LoginPage = new Login();
                LoginPage.init();

                var $form = $("#formLogin");
                var $username = $form.find("[name=Username]");
                $form.submit(function () {
                    $form.attr("action", $form.attr("action") + "?u=" + $username.val());
                })
            }(jQuery));
        ]]></script>

goutte продолжает отказывать в отправке формы, происходит сбой, потому что форма обрабатывается с использованием javascript ? потому что, когда я пытался проверить, я вижу ng-model на входе внутри панели после входа в систему.

Итак, вопрос, есть ли способ или пакет, который я могу использовать, чтобы сделать его входом в панель внутри? (Извините, если есть опечатка или опечатка, Engli sh не мой родной)

...