You must say:"Yes" or "All right"! 注册 | 登陆
浏览模式: 标准 | 列表Tag:curl

PHP CURL模拟GET及POST函数

PHP代码
  1. <?php   
  2. function vcurl($url$post = ''$cookie = ''$cookiejar = ''$referer = ''){   
  3.     $tmpInfo = '';   
  4.     $cookiepath = getcwd().'./'.$cookiejar;   
  5.     $curl = curl_init();   
  6.     curl_setopt($curl, CURLOPT_URL, $url);   
  7.     curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);   
  8.     if($referer) {   
  9.     curl_setopt($curl, CURLOPT_REFERER, $referer);   
  10.     } else {   
  11.     curl_setopt($curl, CURLOPT_AUTOREFERER, 1);    
  12.     }   
  13.     if($post) {   
  14.     curl_setopt($curl, CURLOPT_POST, 1);    
  15.     curl_setopt($curl, CURLOPT_POSTFIELDS, $post);   
  16.     }   
  17.     if($cookie) {   
  18.     curl_setopt($curl, CURLOPT_COOKIE, $cookie);   
  19.     }   
  20.     if($cookiejar) {   
  21.     curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiepath);   
  22.     curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiepath);   
  23.     }   
  24.     //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);   
  25.     curl_setopt($curl, CURLOPT_TIMEOUT, 100);   
  26.     curl_setopt($curl, CURLOPT_HEADER, 0);   
  27.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   
  28.     $tmpInfo = curl_exec($curl);   
  29.     if (curl_errno($curl)) {   
  30.        echo '<pre><b>错误:</b><br />'.curl_error($curl);   
  31.     }   
  32.     curl_close($curl);   
  33.     return $tmpInfo;   
  34. }   
  35. ?>  

新版函数,更加简洁了,HOHO!

Tags: php, curl

重新写的一个CURL模拟登录获取及提交数据的函数

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

附件: curl_function.rar (1.14 K, 下载次数:298)

Tags: php, curl

让PHP File函数支持自定义Header

 

PHP代码
  1. <?php       
  2. $option = array(       
  3.     'http' => array(       
  4.         'method' => "POST"// 常用 POST 或者 GET       
  5.         'header' => "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) \r\n Accept: */*"// Header 域内容,用于定义如 Cookie 之类的信息       
  6.         'content' => "domain=www.kalvin.cn&author=kalvin"// POST 时提交的内容       
  7.         )       
  8.     );       
  9. $xoption = stream_context_create($option); // 生成请求所用的头信息       
  10. echo $str = file_get_contents("http://www.kalvin.cn", false, $xoption); // 执行请求   
  11. print_r($http_response_header); // 显示返回的头信息   
  12. ?>  

File_get_contents 的 POST 方式需要 PHP5 以后才支持,孤魂原来还是习惯使用 Curl ,不过有的虚拟主机没有打开 Curl 扩展的情况下,就可以考虑使用到以上代码了。另外今天还看到了一个 http_build_query() 函数,以后整理火车头发布模块的数据包时,效率提高不少!

Tags: php, curl

php通过curl多线程抓取网站内容

自php5.0开始,增加了如下是curl支持多线程的函数

curl_multi_init - initialize a new cURL multi handle.
             It will return the cURL handle on success and FALSE on error.
curl_multi_add_handle — Add a cURL handle to a cURL multi handle.
curl_multi_exec — Runs all the curl handle in the cURL multi handle in parallel.
curl_multi_remove_handle — Removes a cURL handle from a cURL multi handle.
curl_multi_close — close the cURL multi handle.

» 阅读全文

Tags: php, curl

发一个最近常用的php CURL类

PHP代码
  1. <?php   
  2. function fileget($url){   
  3.     $curl = curl_init();   
  4.     curl_setopt($curl, CURLOPT_URL, $url);   
  5.     curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; )');   
  6.     curl_setopt($curl, CURLOPT_HEADER, 0);   
  7.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   
  8.     curl_setopt($curl, CURLOPT_COOKIE, 'domain=www.kalvin.cn');   
  9.     $tmpInfo = curl_exec($curl);   
  10.     curl_close($curl);   
  11.     return $tmpInfo;   
  12. }   
  13. echo fileget('http://www.kalvin.cn/');   
  14. ?>  

附件中就有使用这个类的例子,远程获取网站内容,然后分析数据,得出结果,感觉很不错!

附件: img.rar (1.21 K, 下载次数:132)

Tags: php, curl

Records:612