//php脚本开始
/*Get请求远程内容函数
url 请求网址
head 模似请求头
foll 是否自动跳转
ref 来路
head 是否设置头
*/
$ip=$_SERVER['REMOTE_ADDR'];
$head=array(
'X-FORWARDED-FOR:'.$ip,
'CLIENT-IP:'.$ip,
'Accept-Language: zh-cn',
'Accept-Encoding:gzip,deflate',
'Connection: Keep-Alive',
'Cache-Control: no-cache'
);
$cookie_file = dirname(__FILE__).'/cookie.txt'; //COOKIE存放地址
function get($url,$head=false,$foll=1,$ref=false){
$curl = curl_init(); // 启动一个CURL会话
if($head){
curl_setopt($curl,CURLOPT_HTTPHEADER,$head);//模似请求头
}
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
@curl_setopt($curl, CURLOPT_FOLLOWLOCATION,$foll); // 使用自动跳转
if($ref){
curl_setopt($curl, CURLOPT_REFERER, $ref);//带来的Referer
}else{
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
}
curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie信息的文件名称
curl_setopt($curl, CURLOPT_COOKIEFILE,$GLOBALS ['cookie_file']); // 读取上面所储存的Cookie信息
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');//解释gzip
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {echo 'Errno'.curl_error($curl);}
$data[]=curl_getinfo($curl);
curl_close($curl); // 关键CURL会话
$data[]=$tmpInfo;
return $data; // 返回数据
}
function post($url,$head=false,$foll=1,$ref=false,$post){
$curl = curl_init(); // 启动一个CURL会话
if($head){
curl_setopt($curl,CURLOPT_HTTPHEADER,$head);//模似请求头
}
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
@curl_setopt($curl, CURLOPT_FOLLOWLOCATION,$foll); // 使用自动跳转
if($ref){
curl_setopt($curl, CURLOPT_REFERER, $ref);//带来的Referer
}else{
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
}
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $post); // Post提交的数据包
curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie信息的文件名称
curl_setopt($curl, CURLOPT_COOKIEFILE,$GLOBALS ['cookie_file']); // 读取上面所储存的Cookie信息
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');//解释gzip
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {echo 'Errno'.curl_error($curl);}
$data[]=curl_getinfo($curl);
curl_close($curl); // 关键CURL会话
$tmpInfo=preg_replace('/script/','js',$tmpInfo);
$data[]=$tmpInfo;
return $data; // 返回数据
}</code>
//截取字符
function preg_message($message, $rule, $getstr, $limit=1) {
$result = array('0'=&gt;'');
$rule = conver_trule($rule); //转义正则表达式特殊字符串
$rule = str_replace('\['.$getstr.'\]', '\s*(.+?)\s*', $rule); //解析为正则表达式
if($limit == 1) {
preg_match("/$rule/is", $message, $rarr);
if(!empty($rarr[1])) {
$result[0] = $rarr[1];
}
} else {
preg_match_all("/$rule/is", $message, $rarr);
if(!empty($rarr[1])) {
$result = $rarr[1];
}
}
return $result;
}
/**
* 转义正则表达式字符串
*/
function conver_trule($rule) {
$rule = preg_quote($rule, "/"); //转义正则表达式
$rule = str_replace('\*', '.*?', $rule);
$rule = str_replace('\|', '|', $rule);
return $rule;
}
/*转编码*/
function escape($str) {
preg_match_all("/[-].|[\x01-]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=&gt;$v) {
if(ord($v[0]) &lt; 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}
转载请注明:HANLEI'BLOG » CURL采集类,可模似浏览器操作