2012年6月10日星期日

CURL模拟登录获取及提交数据的函数


  1. $cookie_file = dirname(__FILE__)."/cookie_".md5(basename(__FILE__)).".txt"// 设置Cookie文件保存路径及文件名   
  2.   
  3. function vlogin($url,$data){ // 模拟登录获取Cookie函数   
  4.     $curl = curl_init(); // 启动一个CURL会话   
  5.     curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址               
  6.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查   
  7.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在   
  8.     curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器   
  9.     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转   
  10.     curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer   
  11.     curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求   
  12.     curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包   
  13.     curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie信息的文件名称   
  14.     curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息   
  15.     curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环   
  16.     curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容   
  17.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回   
  18.     $tmpInfo = curl_exec($curl); // 执行操作   
  19.     if (curl_errno($curl)) {   
  20.        echo 'Errno'.curl_error($curl);   
  21.     }   
  22.     curl_close($curl); // 关闭CURL会话   
  23.     return $tmpInfo// 返回数据   
  24. }   
  25.   
  26. function vget($url){ // 模拟获取内容函数   
  27.     $curl = curl_init(); // 启动一个CURL会话   
  28.     curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址               
  29.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查   
  30.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在   
  31.     curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器   
  32.     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转   
  33.     curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer   
  34.     curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求   
  35.     curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息   
  36.     curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环   
  37.     curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容   
  38.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回   
  39.     $tmpInfo = curl_exec($curl); // 执行操作   
  40.     if (curl_errno($curl)) {   
  41.        echo 'Errno'.curl_error($curl);   
  42.     }   
  43.     curl_close($curl); // 关闭CURL会话   
  44.     return $tmpInfo// 返回数据   
  45. }   
  46.   
  47. function vpost($url,$data){ // 模拟提交数据函数   
  48.     $curl = curl_init(); // 启动一个CURL会话   
  49.     curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址               
  50.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查   
  51.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在   
  52.     curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器   
  53.     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转   
  54.     curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer   
  55.     curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求   
  56.     curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包   
  57.     curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息   
  58.     curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环   
  59.     curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容   
  60.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回   
  61.     $tmpInfo = curl_exec($curl); // 执行操作   
  62.     if (curl_errno($curl)) {   
  63.        echo 'Errno'.curl_error($curl);   
  64.     }   
  65.     curl_close($curl); // 关键CURL会话   
  66.     return $tmpInfo// 返回数据   
  67. }   
  68.   
  69. function delcookie($cookie_file){ // 删除Cookie函数   
  70.  @unlink($cookie_file); // 执行删除   
  71. }   
  72.   
  73. // 使用实例   
  74. if(!file_exists($cookie_file)) { // 检测Cookie是否存在   
  75. $str = vget('http://www.kalvin.cn/?action=login'); // 获取登录随机值   
  76. preg_match("/name=\"formhash\" value=\"(.*?)\"/is",$str,$hash); // 提取登录随机值   
  77. vlogin('http://www.kalvin.cn/post.php','action=dologin&formhash='.$hash[1].'&username=aaa&password=bbb&clientcode=ccc'); // 登录获取Cookie   
  78. }   
  79. echo vget('http://www.kalvin.cn/');   
  80. ?> 

没有评论:

发表评论

上海松善实业有限公司

    上海松善实业有限公司是一家集多品牌销售于一体的电线电缆骨干企业,公司成立于2016年。 公司拥有国内各大品牌:起帆、远东、上上、江南、胜华等。     主要产品有:高低压电力电缆、橡套电缆、控制电缆、架空绝缘电缆、塑胶电缆、电子计算机电缆、通讯电缆、...