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

PHP CURL 模拟提交(支持代理)

作者:jao 发布于:2012-12-16 0:21 分类:PHP教程

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 ?>

标签: php教程 PHP CURL

et_highlighter

评论:

为你一人
2012-12-16 13:14
可不可以把它写成一个,可以设置代理,和浏览器UA的浏览器
jao
2012-12-16 13:43
@为你一人:这个可以啊.其实很简单的 .你会PHP不?
jao
2012-12-16 13:46
@为你一人:你是要做一个浏览器?不是有很多那种在线的浏览器吗?比如:久玩浏览器
Copyright © 2012-2013 逝去的青春 蜀ICP备13029051号-1 手机版 安全联盟 Theme by Admin73 sitemap