首页 > 其他分享 >解压gzip数据流 和 file_get_contents()函数支持SSL错误和header

解压gzip数据流 和 file_get_contents()函数支持SSL错误和header

时间:2023-06-12 21:44:34浏览次数:34  
标签:get header flags file extralen data headerlen

file_get_contents()函数的相关参数,支持SSL错误和header

 

$options = array(
    "ssl" => array(
        "verify_peer" => false,
        "verify_peer_name" => false,
    ),
	"http" => array(
        'timeout '=> 2,
	    'method' => "GET",
	    'header' => 
                    "Accept: application/json\r\n" .
                    "Accept-Encoding: gzip, deflate\r\n" .
                    "Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3\r\n" .
                    // "Connection: keep-alive\r\n" .
                    "Cookie: foo=bar\r\n" .
                    "Host: www.jb51.net\r\n" .
                    "Referer: http://www.baidu.com\r\n" .
                    "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0\r\n" .
                    "X-Requested-With: XMLHttpRequest",

    ),
);
$f = file_get_contents("http://www.jb51.net", false, stream_context_create($options));

  

echo gzdecode($f);

if(!function_exists('gzdecode')){
    function gzdecode($data){
        $flags = ord(substr($data, 3, 1));
        $headerlen = 10;
        $extralen = 0;
        $filenamelen = 0;
        if($flags & 4){
            $extralen = unpack('v', substr($data, 10, 2));
            $extralen = $extralen[1];
            $headerlen += 2 + $extralen;
        }
        if($flags & 8)  // Filename
            $headerlen = strpos($data, chr(0), $headerlen) + 1;
        if($flags & 16)  // Comment
            $headerlen = strpos($data, chr(0), $headerlen) + 1;
        if($flags & 2)  // CRCatendoffile
            $headerlen += 2;
        $unpacked = @gzinflate(substr($data, $headerlen));
        if($unpacked === FALSE)
            $unpacked = $data;
        return $unpacked;
    }
}

  

 

标签:get,header,flags,file,extralen,data,headerlen
From: https://www.cnblogs.com/yisuo/p/17476178.html

相关文章

  • java调用第三方接口,请求方式 get,传参方式 param形式非json。
    项目调用第三方接口,调用方式人家做了限制“请求方式get 传参方式param形式传参,非json”。所有有了下面的代码: importcom.alibaba.fastjson.JSONObject;importcom.spcp.platform.common.util.StringUtil;importcom.spcp.qypt.whpt.util.HttpClientUtil;importorg.spring......
  • rust Dockerfile
    Dockerfile:ARGBUILD_DIR=/rust/buildFROMrustasbuildARGBUILD_DIRWORKDIR${BUILD_DIR}COPYsrc./srcCOPYRocket.toml.COPYCargo.lock.COPYCargo.toml.RUNcargobuild-rFROMdebianasdeployARGBUILD_DIRWORKDIR/etc/rustRUNmkdirconfig......
  • springboot kettle gralde dockerfile 多阶段构建
    dockerfileFROMopenjdk:8-jdk-alpineASTEMP_BUILD_IMAGEENVENVREFRESH_DATE2023-06-1215:00RUNset-eux&&sed-i's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g'/etc/apk/repositoriesRUNapkupdate&&apkadd--no-cacheb......
  • mysql启动报can't create/write to file 'var/run/mysqld/mysqld.pid 错误解决办法
    msql启动报错,启动不了。进入mysql日志默认的路径为/var/log/mysqld.log查看日志,发现报错信息如下:can'tcreate/writetofile'var/run/mysqld/mysqld.pid解决办法:将/var/run/mysqld/权限赋给mysql执行以下命令即可:chown-Rmysql/var/run/mysqldchgrp-Rmysql/var/ru......
  • Makefile优化编译速度
    并行编译:使用make-j命令来进行并行编译,可以加快编译速度。-j后面可以跟一个数字,表示并行编译的线程数。懒惰计算:使用.PHONY规则来避免无谓的重新编译。该规则告诉make,这个规则不需要实际的文件来作为依赖,每次都要重新执行。例如:.PHONY:allall:hello.cgcc-ohell......
  • ICC2的get_cells的输出
    背景:在ICC2中使用get_cells>cell_list的时候,无法将get到的cell全部输出并出现省略号......解决方式:修改默认的app_optioncommon:set_app_options-nameshell.common.collection_result_display_limit-value1000000(原命令默认是100个)更改后可全部输出-----------------......
  • VCS+DVE+Verdi+Makefile使用
    业界有三大仿真工具,Synopsis家的VCS、Cadence家的IUS-irun(现在是Xcelium-xrun)和Mentor的Modelsim。VCS的全称是VerilogCompileSimulator,是Synopsis公司的电路仿真工具,可以进行电路的时序模拟。VCS属于编译型verilog仿真器,内部的仿真工具是DVE。VCS先将verilog/systemverilog文......
  • English Learning Articles 2022-06-11 Your teen wants to get in shape this summer
    Yourteenwantstogetinshapethissummer?Whattosayandwhentoworry|CNN Ifyourchildrensaytheywanttostartexercisingorworkingoutmorethissummer,don’tcelebratejustyet.Iknowmostparentswouldbethrilledtoseetheirteenstakin......
  • Makefile基础教程(伪目标)
    (文章目录)前言本篇文章将讲解Makefile中的伪目标,Makefile的目标在前面的文章中我们已经讲解了那么这篇文章我们就来讲讲伪目标。一、伪目标概念Makefile伪目标是一类特殊的目标,它们的目的是提供给make工具一些命令,而不是用来构建文件的。因为伪目标通常不会对应实际的文件......
  • Makefile教程(Makefile的结构)
    (文章目录)前言一、Makefile的结构Makefile通常由一系列规则组成,每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。下面是Makefile规则的基本结构:target:dependenciescommand1command2...其中,target是要生成的目标文......