PHP+Curl伪造客户端获取页面
2026-04-17 16:54:21
172
分类:php
PHP+Curl伪造客户端获取页面,这个函数还是比较强大,甚至可以抓取https的页面,伪造请求头,伪造POST数据,伪造cookie等,还可以设置文本编码,gzip压缩。
/**
* PHP+Curl伪造客户端获取页面
* @param mixed $url 网页地址
* @param mixed $post 伪造post数据
* @param mixed $referer 伪装ip或域名
* @param mixed $cookie 伪造cookie
* @return mixed 返回抓取结果或者false
*/
function curlContent($url, $post = "", $referer = '', $cookie = '')
{
$usergent = $_SERVER['HTTP_USER_AGENT'];
// $usergent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'; //浏览器标识(PC端)
// $usergent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'; //浏览器标识(移动端)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 为true时请求有返回的值
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 连接超时(秒)
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 执行超时(秒)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁止curl验证对等证书(https请求需要证书,所以https网页不一定能抓取)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 如果curl爬取过程中,设置CURLOPT_FOLLOWLOCATION为true,则会跟踪爬取重定向页面;否则,不会跟踪重定向页面。
curl_setopt($ch, CURLOPT_USERAGENT, $usergent); // 浏览器标识,有的网站会检查useragent
// curl_setopt($ch, CURLOPT_ENCODING, "utf-8"); // 设置编码
// curl_setopt($ch, CURLOPT_ENCODING, "gzip"); // gzip压缩
if ($referer) {
curl_setopt($ch, CURLOPT_REFERER, $referer);// 伪造referer
}
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1); // 设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);// 数据传输
}
if ($cookie) {
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // 设置cookie
}
$output = curl_exec($ch);
curl_close($ch);
if ($output === false) {
// 返回一个保护当前会话最近一次错误的字符串
echo 'curlContent Error: ' . curl_error($ch) . '<br>';
return false;
}
return $output;
}