某Y的催收系统,需要模拟客服点击发送短信,点击AI拨打电话;这个是上级不允许的,只能偷偷干。一个个点的话,操作完这些就需要半天,主管要开发一个插件去批量点击。
需要用(PHP)实现的功能, 模拟登录网站(HTTPS),抓取接口批量发送API请求;
陆续补充完善中:
guzzle composer:
composer require guzzlehttp/guzzle
介绍大家一个不错的guzzle中文文档:Guzzle 6 中文文档__symbol_colon__概述 - 桑鸟网
我使用的 TP8.0 本地测试环境 小皮 wnmp
// 使用关键包
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
// 模拟登录
public function d1()
{
$url = 'http://192.168.0.190/index.php/ce/d2';
$client = new Client();
echo '<div>开始构造请求</div>';
$post_data = [];
$post_data['verify'] = false;
$post_data['form_params']['username'] = '6f68353031';
$post_data['form_params']['password'] = '6f6c7068704534373631';
$response = $client->request('POST', $url, $post_data);
$body = $response->getBody();
$code = $response->getStatusCode(); // 200
$header = $response->getHeaders();
$data = json_decode($body, true);
if ($data['code'])
{
// 保存cookie
Cache::set('c_user_cookie', $header['Set-Cookie'][0]);
echo '<div>请求成功,保存cookie成功</div>';
}
dump($data);
echo '<h1>登录成功</h1>';
echo '<hr>';
echo '<a href="http://192.168.0.190/index.php/ce/d3">去测试</a>';
}
拿到登录成功的cookie后保存到本地,就可以使用这个cookie勇闯天涯了
// 请求D4看看session在不在了
public function d3()
{
$d_user_cookie = Cache::get('c_user_cookie');
// 这个cookie 好像不是持久的, 一会就掉线了
echo '<div>检测本地cookie</div>';
dump( $d_user_cookie );
echo '<div>开始构造请求</div>';
// echo '<div></div>';
// 构造请求
$url = 'http://192.168.0.190/index.php/ce/d4';
$client = new Client();
$post_data = [];
$post_data['verify'] = false;
$post_data['headers']['Cookie'] = $d_user_cookie;
$response = $client->request('POST', $url, $post_data);
$body = (string) $response->getBody();
$code = $response->getStatusCode(); // 200
// $data = json_decode($body, true);
echo '<div>打印结果</div>';
dump($body);
}
请求的d2方法只是保存了下cookie!