@大尨,程序不支持chunked编码,把请求HTTP协议设为1.0可解,因为HTTP/1.0没有chunked编码。
@大尨,还有,要注意,是GuzzleHttp不支持chunked编码,不是curl不支持,curl本身不处理chunked编码,它只是原样返回被chunked编码的内容,需要GuzzleHttp自己去解码。
GuzzleHttp
@大尨,
use GuzzleHttp\Client; $client = new Client(); $client->get('https://hu60.cn/', [ 'curl' => [ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0, ], 'debug' => true, ]);
此时,你使用的是 HTTP/1.0 over TLS 协议,也就是在 TLS 保护下的 HTTP/1.0。
use GuzzleHttp\Client; $client = new Client(); $client->get('https://hu60.cn/', [ 'curl' => [ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, ], 'debug' => true, ]);
此时,你使用的是 HTTP/1.1 over TLS 协议,也就是在 TLS 保护下的 HTTP/1.1。
use GuzzleHttp\Client; defined('CURL_HTTP_VERSION_2') || define('CURL_HTTP_VERSION_2', 3); $client = new Client(); $client->get('https://hu60.cn/', [ 'curl' => [ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2, ], 'debug' => true, ]);
此时,你使用的是 HTTP/2 over TLS 协议,也就是在 TLS 保护下的 HTTP/2。
至于https,是指 HTTP over TLS,也就是在TLS保护下的HTTP(包括HTTP 1.0/1.1/2)。
@大尨,CURL_HTTP_VERSION_1_0也不行吗,那只能说你下载的这个版本,php curl模块有问题。
CURL_HTTP_VERSION_1_0
<?php use GuzzleHttp\Client; require_once __DIR__ . '/vendor/autoload.php'; $client = new Client(); $userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'; $headers = [ 'User-Agent'=> $userAgent, ]; $url = '(搞定)已隐藏'; //{勉强} $response = $client->get($url, [ 'headers' => $headers, // 'curl' => [ // CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0, // ], 'debug' => true, ]); $body = (string)$response->getBody(); var_dump($body);
[聊天-此处没基佬] 穴儿:@方爷,恭喜出狱 -喜欢就啪啪啪啊 表白有什么用- blog:LDXW.TOP
@大尨,程序不支持chunked编码,把请求HTTP协议设为1.0可解,因为HTTP/1.0没有chunked编码。
@大尨,还有,要注意,是
GuzzleHttp
不支持chunked编码,不是curl不支持,curl本身不处理chunked编码,它只是原样返回被chunked编码的内容,需要GuzzleHttp
自己去解码。@大尨,
此时,你使用的是 HTTP/1.0 over TLS 协议,也就是在 TLS 保护下的 HTTP/1.0。
此时,你使用的是 HTTP/1.1 over TLS 协议,也就是在 TLS 保护下的 HTTP/1.1。
此时,你使用的是 HTTP/2 over TLS 协议,也就是在 TLS 保护下的 HTTP/2。
至于https,是指 HTTP over TLS,也就是在TLS保护下的HTTP(包括HTTP 1.0/1.1/2)。
还有个地方很疑惑的是,
php -v
PHP 7.1.13 (cli) (built: Jan 3 2018 20:14:59) ( NTS MSVC14 (Visual C++ 2015) x86 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
下载:https://windows.php.net/downloads/releases/archives/php-7.1.13-nts-Win32-VC14-x64.zip
测试成功,没问题。都不用修改:
'curl' => [
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
],
也能成。
但是我在 php7.3.4nts 上测试就报错,修改协议也报错。
@大尨,
CURL_HTTP_VERSION_1_0
也不行吗,那只能说你下载的这个版本,php curl模块有问题。php -v
PHP 7.3.4 (cli) (built: Apr 2 2019 21:57:22) ( NTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
这个就不行。