跳到主要内容
PHP

php curl模拟百度蜘蛛

管

管理员

PHP

2019年12月01日 2,949 次阅读
本页目录
代码如下:

// 模仿百度蜘蛛
/**
 *
 * @param unknown $filepath
 * @param number $post *            是否为Post发送
 * @param number $ecms *            是否输出header
 * @param number $savcookie *            是否保存cookie
 * @param number $cookie *            是否为发送cookie
 * @return mixed
 */
function bd_crul($filepath, $ecms = 0, $post = 0, $savcookie = 0, $cookie = 0) {
    $ch = curl_init();
    $ip = '220.181.108.' . rand(1, 255); // 百度蜘蛛
    $cookiefile = ECMS_PATH . "e/data/tmp/cjcookie.txt"; // 创建一个用于存放cookie信息的临时文件
    $timeout = 15;
    curl_setopt($ch, CURLOPT_URL, $filepath);
    curl_setopt($ch, CURLOPT_TIMEOUT, 0);
    // 伪造百度蜘蛛IP
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'X-FORWARDED-FOR:' . $ip . '',
        'CLIENT-IP:' . $ip . ''
    ));
    if($savcookie) {
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
    }
    if($cookie) {
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
    }
    // 伪造百度蜘蛛头部
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, $ecms);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POST, $post);
    $content = curl_exec($ch);
    curl_close($ch);
    if($content === false) { // 输出错误信息
        $no = curl_errno($ch);
        switch (trim($no)) {
            case 28:
                $error = '访问目标地址超时';
                break;
            default:
                $error = curl_error($ch);
                break;
        }
        exit();
    } else {
        return $content;
    }
}

Related

相关文章

同分类文章 →
2026年07月11日 PHP

laravel什么样的方法适合放在模型中?什么适合用专门的服务类? cachedFavIds适合放在模型中吗?

一、适合放在模型中的方法Laravel 采用 ActiveRecord 风格,模型本身就是"数据 + 围绕该数据的操作"的载体。以下几类方法适合放模型: 关联关系:belongsTo、morphTo、hasMany 等。如 UserFav::userfavable()、UserFav::us

2026年04月13日 PHP

Vue3 静态文件放在同域名 Laravel 项目下

核心思路是:Vue3 构建后的静态文件放到 Laravel 的 public/ 目录下,通过 Laravel 路由的 catch-all 机制让 SPA 的前端路由正常工作。方案说明以 xx.com/admin 为例,整体架构如下:请求流程:xx.com/admin/* → Laravel

2025年08月18日 PHP

Laravel Eloquent 中可以通过静态方式调用的方法

在 Laravel Eloquent 中,可以通过静态方式调用的方法包括:1. 查询作用域 (Scopes)// 可以静态调用UserComment::active()->get();UserComment::where('status', 1)->first();2. Eloquent 内置的查询方法UserComment::fi

WeChat

扫码加我微信

微信二维码