深入理解curl类,可用于模拟get,post和curl下载

如下所示:


代码如下:

<?php
class Curl {
 /*
  * get 方式获取访问指定地址
  * @param  string url 要访问的地址
  * @param  string cookie cookie的存放地址,没有则不发送cookie
  * @return string curl_exec()获取的信息
  * @author andy
  **/
 public function get( $url, $cookie='' )
 {
  // 初始化一个cURL会话
  $curl = curl_init($url);
  // 不显示header信息
  curl_setopt($curl, CURLOPT_HEADER, 0);
  // 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  // 使用自动跳转
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  if(!empty($cookie)) {
   // 包含cookie数据的文件名,cookie文件的格式可以是Netscape格式,或者只是纯HTTP头部信息存入文件。
   curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
  }
  // 自动设置Referer
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
  // 执行一个curl会话
  $tmp = curl_exec($curl);
  // 关闭curl会话
  curl_close($curl);
  return $tmp;
 }
 /*
  * post 方式模拟请求指定地址
  * @param  string url 请求的指定地址
  * @param  array  params 请求所带的
  * #patam  string cookie cookie存放地址
  * @return string curl_exec()获取的信息
  * @author andy
  **/
 public function post( $url, $params, $cookie )
 {
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_HEADER, 0);
  // 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  // 从证书中检查SSL加密算法是否存在
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
  //模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
  curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  //发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
  curl_setopt($curl, CURLOPT_POST, 1);
  // 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  // 使用自动跳转
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  // 自动设置Referer
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
  // Cookie地址
  curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
  // 全部数据使用HTTP协议中的"POST"操作来发送。要发送文件,
  // 在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串
  // 类似'para1=val1¶2=val2&...'或使用一个以字段名为键值,字段数据为值的数组
  // 如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
  curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
  $result = curl_exec($curl);
  curl_close($curl);
  return $result;
 }
 /**
  * 远程下载
  * @param string $remote 远程图片地址
  * @param string $local 本地保存的地址
  * @param string $cookie cookie地址 可选参数由
  * 于某些网站是需要cookie才能下载网站上的图片的
  * 所以需要加上cookie
  * @return void
  * @author andy
  */
 public function reutersload($remote, $local, $cookie= '') {
  $cp = curl_init($remote);
  $fp = fopen($local,"w");
  curl_setopt($cp, CURLOPT_FILE, $fp);
  curl_setopt($cp, CURLOPT_HEADER, 0);
  if($cookie != '') {
   curl_setopt($cp, CURLOPT_COOKIEFILE, $cookie);
  }
  curl_exec($cp);
  curl_close($cp);
  fclose($fp);
 }
}

(0)

相关推荐

  • php的curl实现get和post的代码

    curl 支持SSL证书.HTTP POST.HTTP PUT .FTP 上传,kerberos.基于HTT格式的上传.代理.cookie.用户+口令证明.文件传送恢复.http代理通道就最常用的来说,是基于http的get和post方法. 代码实现: 1.http的get实现 复制代码 代码如下: $ch = curl_init("http://www.jb51.net/") ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; cur

  • PHP CURL模拟GET及POST函数代码

    复制代码 代码如下: <?php function vcurl($url, $post = '', $cookie = '', $cookiejar = '', $referer = ''){ $tmpInfo = ''; $cookiepath = getcwd().'./'.$cookiejar; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT,

  • PHP的curl实现get,post和cookie(实例介绍)

    类似于dreamhost这类主机服务商,是显示fopen的使用 的.使用php的curl可以实现支持FTP.FTPS.HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP.curl 支持SSL证书.HTTP POST.HTTP PUT .FTP 上传,kerberos.基于HTT格式的上传.代理.cookie.用户+口令证明.文件传送恢复.http代理通道就最常用的来说,是基于http的 get和post方法.代码实现:1.http的get实现 复制代码

  • PHP中使用cURL实现Get和Post请求的方法

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它. 2.基本结构 在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤: (1)初始化 curl_init() (2)设置变量 curl_setopt() .最为重要,一切玄妙均在此.有一长串cURL参数可供设置,它们能指定URL请求的各个细节.要一次性

  • php中使用Curl、socket、file_get_contents三种方法POST提交数据

    抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl.直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了.我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好. php中curl和file_get_content的一

  • 深入理解curl类,可用于模拟get,post和curl下载

    如下所示: 复制代码 代码如下: <?phpclass Curl { /*  * get 方式获取访问指定地址  * @param  string url 要访问的地址  * @param  string cookie cookie的存放地址,没有则不发送cookie  * @return string curl_exec()获取的信息  * @author andy  **/ public function get( $url, $cookie='' ) {  // 初始化一个cURL会话  

  • 全面理解Java类和对象

    面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.在面向对象程序设计(OOP)中,不必关心对象的具体实现.在传统的结构化程序设计中,算法是第一位的,数据结构是第二位的,即首先确定如何操作数,再考虑如何组织数据,以方便操作.而OOP则颠倒了这种次序,将数据放在第一位,然后再考虑操作数据的算法. 一.类 类是构造对象的模板和蓝图.通俗地说,类相当于建筑的图纸,而对象相当于建筑物.由类构造对象的过程称为创建对象的实例. Java中通过关键字class定义"类"

  • 深入理解PHP类的自动载入机制

    php的自动加载: 在php5以前,我们要用某个类或类的方法,那必须include或者require,之后才能使用,每次用一个类,都需要写一条include,麻烦 php作者想简单点,最好能引用一个类时,如果当前没有include进来,系统能自动去找到该类,自动引进~ 于是:__autoload()函数应运而生. 通常放在应用程序入口类里面,比如discuz中,放在class_core.php中. 先讲浅显的例子: 第一种情况:文件A.php中内容如下 <?php class A{ public

  • 详解php curl带有csrf-token验证模拟提交方法

    通常为了安全会在表单里加入一个随机的token值来防止csrf攻击. 要想模拟提交有token验证的网站其实也不难. 1.通过正则获取token 2.带上获取到的token模拟提交 下面是一个成功的例子 目录结构 │ form.php –需要模拟的表单 │ getForm.php – 模拟提交程序 │ post.php –表单验证程序 │ └─cookie – cookie存放目录 getForm.php <?php $cookie_file = './cookie/'.time().'.coo

  • Python通过类的组合模拟街道红绿灯

    一,红绿灯揭示板案例思路 1. 创建Traffic_light红绿灯类 (1)静态属性 : <1> 绿灯时间,<2> 黄灯时间 , <3> 红灯时间, <4> 两块显示时间的电子屏 (2)动态属性 <1> 输入红黄绿时间函数(静态函数),<2> 红黄绿时间倒计时函数 , <3> 构造电子屏数字的显示函数,<4> 显示两块电子屏绑定两位数的显示函数 <5> 实例化对象展示电子屏函数 2. 电子屏类的创

  • php实现的一个很好用HTML解析器类可用于采集数据

    复制代码 代码如下: <?php    $oldSetting = libxml_use_internal_errors( true );    libxml_clear_errors();   /**  *   * -+-----------------------------------  * |PHP5 Framework - 2011  * |Web Site: www.iblue.cc  * |E-mail: mejinke@gmail.com  * |Date: 2012-10-12

  • php 字符过滤类,用于过滤各类用户输入的数据

    详细代码如下: 复制代码 代码如下: <?php abstract class Filter { //filter parent class private $blackstr = array(); private $whitestr = array(); function filtit($str) { //do something } } class LoginFilter extends Filter { //for user login filte username(过滤注册的用户名) f

  • Hook实现Android 微信、陌陌 、探探位置模拟(附源码下载)

    Hook实现Android 微信.陌陌 .探探位置模拟 最近需要对微信,陌陌等程序进行位置模拟 实现世界各地发朋友圈,搜索附近人的功能,本着站在巨人肩膀上的原则 爱网上搜索一番. 也找到一些 代码和文章,但是代码大都雷同而且都有一个弊端 比如说 微信 对目标函数实现hook之后第一次打开微信 第一次定位是可以改变的 但是 我如果想更换地址的话 就需要重启手机了,重新加载hook了,试了很多次都是这样满足不了需求. 为了改进这个地方我们从gps定义的源代码流程开始看寻找hook系统函数的突破口 我

  • Android自定义控件案例汇总2(自定义开关、下拉刷新、侧滑菜单)

    案例四 自定义开关: 功能介绍:本案例实现的功能是创建一个自定义的开关,可以自行决定开关的背景.当滑动开关时,开关的滑块可跟随手指移动.当手指松开后,滑块根据开关的状态,滑到最右边或者滑到最左边,同时保存开关的状态,将开关的状态回调给调用者.当然,上述功能系统给定的switch控件也可以实现. 实现步骤: 1. 写一个类继承view,重写两个参数的构造方法.在构造方法中指定工作空间,通过attrs.getAttributeResourceValue方法将java代码中的属性值和xml中的属性值联

  • java中多线程的超详细介绍

    1.线程概述 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程.当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程. 2.线程与进程 进程概述: 几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程( Process).当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位. 进程特征: 1.独立性:进程是系统中独立存在的实体,

随机推荐