error_reporting(0);
class GOLogin {
public $AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36';
//HTTPs 模拟登录
public function https_login_post($url,$cookie,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT,$this->AGENT); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
curl_setopt($curl, CURLOPT_REFERER,'https://www.baidu.com');// 设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
//HTTPs
public function https_get_content($url,$cookie,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $this->AGENT); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
curl_setopt($curl, CURLOPT_REFERER,'https://www.baidu.com');// 设置Referer
if( !empty($data) ) {
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
}
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
//HTTP 模拟登录
public function http_login_post($url, $cookie, $post,$param=array()) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_USERAGENT, $this->AGENT);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
$content= curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
return $content;
}
//登录成功后获取数据
public function http_get_content($url, $cookie,$param=array()) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $this->AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
public function verify($url,$cookie)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_USERAGENT, 'Baiduspider');
curl_setopt($curl, CURLOPT_USERAGENT, $this->AGENT);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
$result = curl_exec($curl);
header('Content-type: image/JPEG');
echo $result;
}
public function cok_log_data($url, $cookie,$post){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $this->AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
}
$cookie = dirname(__FILE__) . '/cookie_tp.txt'; //设置cookie保存路径
$GOLogin = new GOLogin();
if( $_GET['c'] == 'png' ) {
echo '<img class="verifyimg reloadverify" src="'.$GOLogin->verify('http://www.thinkphp.cn/member/verify.html?'.rand(1.55,588755.4),$cookie).'">';
} else {
if(isset($_POST['seccodeverify']) && $_POST['seccodeverify'] !=null ) {
$post = array (
'username' =>'',
'password' => '',
'seccodeverify' =>''
);//登陆数据
$url = "http://www.thinkphp.cn/member/loginpost.html"; //登录地址
$post['seccodeverify'] = $_POST['seccodeverify'];
$content = $GOLogin->cok_log_data($url, $cookie, $post);
print_r($content);
} else {
echo '<form action="" method="post" class="change-name">
<label class="lab">账户:</label>
<input type="text" class="text" name="username" value=""/> <br/><br/>
<label class="lab">密码:</label>
<input type="password" class="text" name="password" value=""/><br/><br/>
<label class="lab">验证码</label>
<input type="text" class="text" name="seccodeverify" value=""/><br/>
<img class="verifyimg reloadverify" src="http://www.yuyid.com/qian_dao2.php?c=png"'.rand(1.55,588755.4).'" alt="点击切换">
<br/><input type="submit" value="提交" >
</form>';
}
}
handler.rar
( 1.96 KB 下载:35 次 )
最佳答案