Login 模擬登陸擴展


Login 模擬登陸擴展

Login擴展,可以實現模擬登陸然後擷取。

安裝:

composer require jaeger/querylist-ext-login

GIT位址:

https://github.com/jae-jae/QueryList-Ext-Login.git

#依賴(透過Composer安裝的請忽略)

Login擴充依賴Request擴充Request擴充安裝教學:http://doc.querylist.cc/site/index/doc/21

#用法

$login = QueryList::run('Login',[
    'target' => '登陆表单提交的目标地址',
    'method' => 'post',
    //登陆表单需要提交的数据
    'params' => ['username'=>'admin','password'=>'admin'],
    'cookiePath' => 'cookie保存路径'
    //更多参数查看Request扩展
    ]);
//登陆成功后,就可以调用get和post两个方法来抓取登陆后才能抓的页面
$ql = $login->get('页面地址'[,'处理页面的回调函数','传给回调的参数']);
$ql = $login->post('页面地址','post提交的数据数组'[,'处理页面的回调函数','传给回调的参数']);
$data = $ql->setQuery(...)->data;

返回值為Login插件對象,這個對象的get和post兩個方法的返回值為設定好了html屬性的QueryList對象,然後應該調用QueryList的setQuery方法設定採集規則。

//模拟登陆
$login = QueryList::run('Login',[
    'target' => 'http://xxx.com/login',
    'method' => 'post',
    'params' => ['username'=>'admin','password'=>'admin'],
    'cookiePath' => './cookie123.txt'
    ]);
$data = $login->post('http://xxx.com/admin',['key'=>'value'],function($content,$args){
//这里可以对页面做一些格外的处理
//替换页面的所有的yyy为xxx
$content = str_replace('yyy',$args,$content);
return $content;
},'xxx')->setQuery(['title'=>['h1','text']])->data;