使用 Guzzle 从未命名字段远程登录 PHP
Remote login from an unnamed fields using Guzzle PHP
我想通过 Guzzle 远程连接到一个特定站点。用户名和密码字段没有名字的问题。
我的问题是:
- 我可以在不知道字段名称的情况下使用 POST 方法吗?
- 我可以改用 class 的名字吗?
我的代码:
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;
?>
示例。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>
它是 ajax 登录表单吗?如果是这样,我认为在 fileds 中输入数据后,表单将调用原始登录控制器的 Ajax 调用。所以你必须找到那个请求和 post 参数名称
使用 Firefox 或 chrome 按 F12 也显示 Web Developer,转到网络面板并 select XHR
过滤 ajax 请求。
在你提交表单的情况下,有一个回调到另一个页面
单击右侧的 params
选项卡将显示您要查找的 post 数据。
$response = $client->request('POST', 'https://api.moodys.com/rest/mobile/oauth/token?client=0', [
'form_params' => [
'username' => 'test@gmail.com',
'grant_type' => 'password',
'password' => 'testpassword',
]
])
我想通过 Guzzle 远程连接到一个特定站点。用户名和密码字段没有名字的问题。
我的问题是:
- 我可以在不知道字段名称的情况下使用 POST 方法吗?
- 我可以改用 class 的名字吗?
我的代码:
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;
?>
示例。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>
它是 ajax 登录表单吗?如果是这样,我认为在 fileds 中输入数据后,表单将调用原始登录控制器的 Ajax 调用。所以你必须找到那个请求和 post 参数名称
使用 Firefox 或 chrome 按 F12 也显示 Web Developer,转到网络面板并 select XHR
过滤 ajax 请求。
在你提交表单的情况下,有一个回调到另一个页面
单击右侧的 params
选项卡将显示您要查找的 post 数据。
$response = $client->request('POST', 'https://api.moodys.com/rest/mobile/oauth/token?client=0', [
'form_params' => [
'username' => 'test@gmail.com',
'grant_type' => 'password',
'password' => 'testpassword',
]
])