许多时候为了更自动化一些过程,我们会用到程序模拟用户行为,更多的时候我们每写一次都会去查一次手册资料或者看一下自己之前写过的代码来加快我们开发进程,在此留下笔记供自己或者网友以后做参考。
我们用curl模拟用户的登入行为,之后再用登入产生的cookie文件模拟浏览器访问,使服务器产生用户登入后才会处罚的行为,以次达到目的或者获取想要的数据。
下面为代码,部分代码已经增加注释
$cookie_jar = dirname(__FILE__)."/set.cookie";
function curlPost($url, $data, $cookie_jar, $set_cookie = 0, $ispost = 0, $timeout = 30)//参数 1:访问地址 2:提交数据 3:cookie地址 4:[0不启用cookie,1获取cookie,2提交cookie,3同时启用] 5:是否为post提交,默认为get方式 6:超时时间
{
$ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
$ch = curl_init();
$opt = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => $timeout,
);
if($set_cookie == 1 or $set_cookie == 3) $opt[CURLOPT_COOKIEJAR] = $cookie_jar;
if($set_cookie == 2 or $set_cookie == 3) $opt[CURLOPT_COOKIEFILE] = $cookie_jar;
if($ispost){
$opt[CURLOPT_POST] = 1;
$opt[CURLOPT_POSTFIELDS] = (array)$data;
}
if ($ssl){
$opt[CURLOPT_SSL_VERIFYHOST] = 1;
$opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
}
curl_setopt_array($ch, $opt);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$array = array(‘usrname‘=>‘name‘,‘password‘=>‘psw‘);
$data = curlPost(‘https://www.xxx.com/login‘, $array, $cookie_jar, 0, 1);//设置登入,绕过https方式访问,并获取cookie文件
echo ($data);
$data = curlPost(‘https://www.xxx.com/‘, array(), $cookie_jar, 1, 2);//通过cookie文件模拟客户端用户访问
echo ($data);
对于数据采集和用户行为模拟的路还很长,慢慢来吧。
你也可以回吐槽墙看看
原文:http://www.cnblogs.com/zierta/p/4840667.html