php curl 典型案例代码 curl例子 curl_init() curl_setopt

zblog2年前zblog问题解答96
 
 
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     // 返回结果而不直接输出
curl_setopt($ch, CURLOPT_TIMEOUT, 10);           // 设置最大延迟为3秒
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略https证书验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 忽略https主机名验证
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); // 设置不自动跳转
curl_setopt($ch, CURLOPT_HTTPHEADER, getHeaders4You());
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);  // 告诉cURL不要跟随重定向
curl_setopt($ch, CURLOPT_HEADER, true);           // 将响应头包含在输出中


//curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); // 设置 cookie 文件的读取路径
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies2.txt"); // 设置 cookie 文件的保存路径


$data = curl_exec($ch);

if (curl_errno($ch)) {
    $error_msg = curl_error($ch);
    echo "cURL Error: " . $error_msg . brStr();
    $data = ''; // 如果发生错误,则返回空字符
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);          // 获取 HTTP 响应码 302
    echo "HTTP Status Code: " . $httpCode . "\n";
}

echo "HTTP Status Code: " . $httpCode . "\n";
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);         // 获取响应头部大小
$headers = substr($data, 0, $header_size);                       // 获取响应头部
$body = substr($data, $header_size);                                    // 获取响应正文(html)

// 分割头部和正文,以便单独处理
$headers_array = explode("\r\n", $headers);
// 循环遍历头部,找到 Set-Cookie 行
foreach ($headers_array as $header) {
    if (strpos($header, 'Set-Cookie:') === 0) {
        echo $header . "\n"; // 打印出 Set-Cookie 头部的值
    }
}
 
// 从响应头部中提取 Location 字段
if (preg_match('/Location:(.*?)\n/', $headers, $matches)) {
    $redirectUrl = trim($matches[1]);
    echo "Redirect URL is: $redirectUrl\n";
} else {
    echo "Location header not found.\n";
}



function getHeaders4You()
{
    $headers = [
        "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-language: zh-CN,zh;q=0.9",
        "cache-control: no-cache",
        "pragma: no-cache",
        "sec-ch-ua: \"Chromium\";v=\"124\", \"Google Chrome\";v=\"124\", \"Not-A.Brand\";v=\"99\"",
        "sec-ch-ua-mobile: ?0",
        "sec-ch-ua-platform: \"Windows\"",
        "sec-fetch-dest: document",
        "sec-fetch-mode: navigate",
        "sec-fetch-site: none",
        "sec-fetch-user: ?1",
        "upgrade-insecure-requests: 1",
        #"Referer:https://www.baidu.com/",
    ];
    return $headers;
}

相关文章

ucs-4 这是啥编码 mb_convert_encoding($content, 'ucs-4', 'utf-8') 啥意思

UCS-4 是一种Unicode字符编码形式,全称为 Universal Character Set - 4 bytes。它是Unicode标准的一种实现,其中每个字符都使用4个字...

zblog链式sql不支持 ESCAPE  ,但是sqlite 必须要用ESCAPE ,硬改sql不优雅了

zblog链式sql不支持 ESCAPE ,但是sqlite 必须要用ESCAPE ,硬改sql不优雅了

/zb_system/function/lib/zblogphp.php通过用户名获取用户实例(不区分大小写). public function GetMemberByN...

zblog后台的字符图标 ico

zblog后台的字符图标https://zblog.gongshi5.com/tool/ico.html...

php扩展 宝塔一览

php扩展 宝塔一览

必须装是因为 PHP7. 2 存在 绕过open_basedir()的问题,PHP7.4没有这个问题。其他2是提升效率的!!配置文件 可以  disable_classes = "...

http?https?相对协议? // 相对协议  相对协议的主要作用是根据当前页面的协议(HTTP或HTTPS)来自动选择使用哪个协议来加载资源。

http?https?相对协议? // 相对协议 相对协议的主要作用是根据当前页面的协议(HTTP或HTTPS)来自动选择使用哪个协议来加载资源。

相对协议的主要作用是根据当前页面的协议(HTTP或HTTPS)来自动选择使用哪个协议来加载资源。当你在HTML中使用一个以//开头的URL时,浏览器会检查当前页面是通过HTTP还是HTTPS加载的,并...

ai提示词  title description tags生成

ai提示词 title description tags生成

你是一个专业的SEO优化大师,精通网站在各大搜索引擎的排名优化方式。现在给一篇文章在基于seo的基础上生成文章标签、文章描述、文章标题。 要求: 理解给定内容是属于哪一个行业,并且思考这个篇内容是...