逝去的青春
PHP CURL 模拟提交(支持代理)
2012-12-16 jao




01 <?php






02 define ( 'IS_PROXY', true ); //是否启用代理






03 /* cookie文件 */






04 $cookie_file = dirname ( __FILE__ ) . \"/cookie_\" . md5 ( basename __FILE__ ) ) . \".txt\"; // 设置Cookie文件保存路径及文件名






05 /*模拟浏览器*/






06 $user_agent = \"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)\";






07  






08 function vlogin($url$data) { // 模拟登录获取Cookie函数






09     $curl = curl_init (); // 启动一个CURL会话






10     if (IS_PROXY) {






11         //以下代码设置代理服务器






12         //代理服务器地址






13         curl_setopt ( $curl, CURLOPT_PROXY, $GLOBALS ['proxy'] );






14     }






15     curl_setopt ( $curl, CURLOPT_URL, $url ); // 要访问的地址






16     curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); // 对认证证书来源的检查






17     curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 1 ); // 从证书中检查SSL加密算法是否存在






18     curl_setopt ( $curl, CURLOPT_USERAGENT, $GLOBALS ['user_agent'] ); // 模拟用户使用的浏览器






19     @curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); // 使用自动跳转






20     curl_setopt ( $curl, CURLOPT_AUTOREFERER, 1 ); // 自动设置Referer






21     curl_setopt ( $curl, CURLOPT_POST, 1 ); // 发送一个常规的Post请求






22     curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data ); // Post提交的数据包






23     curl_setopt ( $curl, CURLOPT_COOKIEJAR, $GLOBALS ['cookie_file'] ); // 存放Cookie信息的文件名称






24     curl_setopt ( $curl, CURLOPT_COOKIEFILE, $GLOBALS ['cookie_file'] ); // 读取上面所储存的Cookie信息






25     curl_setopt ( $curl, CURLOPT_TIMEOUT, 30 ); // 设置超时限制防止死循环






26     curl_setopt ( $curl, CURLOPT_HEADER, 0 ); // 显示返回的Header区域内容






27     curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 获取的信息以文件流的形式返回






28     $tmpInfo = curl_exec ( $curl ); // 执行操作






29     if (curl_errno ( $curl )) {






30         echo 'Errno' . curl_error ( $curl );






31     }






32     curl_close ( $curl ); // 关闭CURL会话






33     return $tmpInfo// 返回数据






34 }






35  






36 function vget($url) { // 模拟获取内容函数






37     $curl = curl_init (); // 启动一个CURL会话






38     if (IS_PROXY) {






39         //以下代码设置代理服务器






40         //代理服务器地址






41         curl_setopt ( $curl, CURLOPT_PROXY, $GLOBALS ['proxy'] );






42     }






43     curl_setopt ( $curl, CURLOPT_URL, $url ); // 要访问的地址






44     curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); // 对认证证书来源的检查






45     curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 1 ); // 从证书中检查SSL加密算法是否存在






46     curl_setopt ( $curl, CURLOPT_USERAGENT, $GLOBALS ['user_agent'] ); // 模拟用户使用的浏览器






47     @curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); // 使用自动跳转






48     curl_setopt ( $curl, CURLOPT_AUTOREFERER, 1 ); // 自动设置Referer






49     curl_setopt ( $curl, CURLOPT_HTTPGET, 1 ); // 发送一个常规的Post请求






50     curl_setopt ( $curl, CURLOPT_COOKIEFILE, $GLOBALS ['cookie_file'] ); // 读取上面所储存的Cookie信息






51     curl_setopt ( $curl, CURLOPT_TIMEOUT, 120 ); // 设置超时限制防止死循环






52     curl_setopt ( $curl, CURLOPT_HEADER, 0 ); // 显示返回的Header区域内容






53     curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 获取的信息以文件流的形式返回






54     $tmpInfo = curl_exec ( $curl ); // 执行操作






55     if (curl_errno ( $curl )) {






56         echo 'Errno' . curl_error ( $curl );






57     }






58     curl_close ( $curl ); // 关闭CURL会话






59     return $tmpInfo// 返回数据






60 }






61  






62 function vpost($url$data) { // 模拟提交数据函数






63     $curl = curl_init (); // 启动一个CURL会话






64     if (IS_PROXY) {






65         //以下代码设置代理服务器






66         //代理服务器地址






67         curl_setopt ( $curl, CURLOPT_PROXY, $GLOBALS ['proxy'] );






68     }






69     curl_setopt ( $curl, CURLOPT_URL, $url ); // 要访问的地址






70     curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); // 对认证证书来源的检查






71     curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 1 ); // 从证书中检查SSL加密算法是否存在






72     curl_setopt ( $curl, CURLOPT_USERAGENT, $GLOBALS ['user_agent'] ); // 模拟用户使用的浏览器






73     @curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); // 使用自动跳转






74     curl_setopt ( $curl, CURLOPT_AUTOREFERER, 1 ); // 自动设置Referer






75     curl_setopt ( $curl, CURLOPT_POST, 1 ); // 发送一个常规的Post请求






76     curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data ); // Post提交的数据包






77     curl_setopt ( $curl, CURLOPT_COOKIEFILE, $GLOBALS ['cookie_file'] ); // 读取上面所储存的Cookie信息






78     curl_setopt ( $curl, CURLOPT_TIMEOUT, 120 ); // 设置超时限制防止死循环






79     curl_setopt ( $curl, CURLOPT_HEADER, 0 ); // 显示返回的Header区域内容






80     curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 获取的信息以文件流的形式返回






81     $tmpInfo = curl_exec ( $curl ); // 执行操作






82     if (curl_errno ( $curl )) {






83         echo 'Errno' . curl_error ( $curl );






84     }






85     curl_close ( $curl ); // 关键CURL会话






86     return $tmpInfo// 返回数据






87 }






88  






89 function delcookie($cookie_file) { // 删除Cookie函数






90     unlink ( $cookie_file ); // 执行删除






91 }






92 ?>

评论:
jao
2012-12-16 13:46 回复
@为你一人:你是要做一个浏览器?不是有很多那种在线的浏览器吗?比如:久玩浏览器
jao
2012-12-16 13:43 回复
@为你一人:这个可以啊.其实很简单的 .你会PHP不?
为你一人
2012-12-16 13:14 回复
可不可以把它写成一个,可以设置代理,和浏览器UA的浏览器