使用Guzzle PHP从未命名字段进行远程登录

时间:2019-05-26 10:51:38

标签: php login guzzle

有一个我想通过Guzzle远程连接的特定站点。用户名和密码字段不带名称的问题。

我的问题是:

  1. 我可以在不知道字段名称的情况下使用POST方法吗?
  2. 我可以改用班级名称吗?

我的代码:

Login.php

<?php
require("master/guzzle/vendor/autoload.php");

$username = "abc";
$password = "123456";

$client = new \GuzzleHttp\Client();

$response = $client->post('https://www.exmaple.com/login', [
    'body' => [
        'username' => $username,
        'password' => $password,
        'action' => 'login'
    ],
    'cookies' => true
]
);

echo $response;
?>

example.com/login

<form>
    <div class="login-name">
        <div data-nep="Label" class="name-font default neptune_block_15yk4 neptune_LABEL-STANDARD_1h3i4">Username
            <div class="neptune_fade-after_15yk4"></div>
        </div>
        <div data-nep="TextBox">
            <input type="text" placeholder="" value="" class="neptune_default_1jbvk" style="height:30px">
            </div>
        </div>
        <div class="login-name">
            <div data-nep="Label" class="name-font default neptune_block_15yk4 neptune_LABEL-STANDARD_1h3i4">Password
                <div class="neptune_fade-after_15yk4"></div>
            </div>
            <div data-nep="TextBox">
                <input type="password" placeholder="" value="" class="neptune_default_1jbvk" style="height:30px">
                </div>
            </div>
        </form>

1 个答案:

答案 0 :(得分:0)

这是ajax登录表单吗?如果是这样,我认为在fileds中输入数据后,该表单将调用原始登录控制器的Ajax调用。因此您必须找到该请求并发布参数名称

使用Firefox或Chrome浏览器,按F12键显示Web开发人员信息,请转到“网络”面板,然后选择messages.head()来过滤ajax请求。

在您的情况下,提交表单时会回调到另一个页面 点击右侧的XHR标签,将向您显示您要查找的帖子数据。

Sample ScreenShot

params