gpt4 book ai didi

powershell - 如何在 Invoke-WebRequest 中显示 TLS 握手信息和 CONNECT 请求

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:05 25 4
gpt4 key购买 nike

当我通过 HTTPS 和/或使用 HTTP 代理访问站点时,Linux 中的 cURL 提供了 -v/--verbose 标志来显示 CONNECT 向代理请求,以及 SSL/TLS 握手过程(包括证书),如

* Rebuilt URL to: https://www.example.com/
* Trying 192.168.2.1...
* Connected to my-proxy.local (192.168.2.1) port 8080 (#0)
* Establish HTTP proxy tunnel to www.example.com:443
> CONNECT www.example.com:443 HTTP/1.1
> Host: www.example.com:443
> User-Agent: curl/7.47.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* found 148 certificates in /etc/ssl/certs/ca-certificates.crt
* found 597 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
* server certificate verification OK
* server certificate status verification SKIPPED
* common name: www.example.org (matched)
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
* subject: C=US,ST=California,L=Los Angeles,O=Internet Corporation for Assigned Names and Numbers,OU=Technology,CN=www.example.org
* start date: Tue, 03 Nov 2015 00:00:00 GMT
* expire date: Wed, 28 Nov 2018 12:00:00 GMT
* issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert SHA2 High Assurance Server CA
* compression: NULL
* ALPN, server accepted to use http/1.1
> GET / HTTP/1.1
> Host: www.example.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Cache-Control: max-age=604800
< Content-Type: text/html
< Date: Mon, 27 Nov 2017 23:08:55 GMT
< Etag: "359670651+gzip+ident"
< Expires: Mon, 04 Dec 2017 23:08:55 GMT
< Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
< Server: ECS (ord/4C84)
< Vary: Accept-Encoding
< X-Cache: HIT
< Content-Length: 1270
<
< (body...)

在使用 Invoke-WebRequest 时是否有类似的信息?或者我应该使用另一个 CmdLet 吗?我尝试了 -Debug-Verbose,两者都没有显示任何信息。即使是原始内容也只包含代理后的实际请求,即上面示例中的 GET/HTTP/1.1

简而言之,我想看到类似这条线的东西

> CONNECT www.example.com:443 HTTP/1.1

* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256

最佳答案

您可以从 Invoke-WebRequest.RawContent 属性中获取其中的一些信息。不幸的是,如果您选择 Invoke-RestMethod,PowerShell 基本上会丢弃您感兴趣的所有 HTTP 信息。

对于这个例子,我将使用 https://jsonplaceholder.typicode.com/posts ,这是一个很好的测试 REST 端点,用于摆弄这样的事情。

首先,我将连接到该站点并将其存储在一个变量 $response 中。

$response = Invoke-WebRequest -uri https://jsonplaceholder.typicode.com/posts 

现在我可以查询并提取一些有用的字段以获取一些您正在寻找的信息。

$response.BaseResponse 


IsMutuallyAuthenticated : False
Cookies : {__cfduid=d84018de2d621df9d53eb52d97cd33a651511881763}
Headers : {Transfer-Encoding, Connection, Vary, Access-Control-Allow-Credentials...}
SupportsHeaders : True
ContentLength : -1
ContentEncoding :
ContentType : application/json; charset=utf-8
CharacterSet : utf-8
Server : cloudflare-nginx
LastModified : 11/28/2017 10:17:27 AM
StatusCode : OK
StatusDescription : OK
ProtocolVersion : 1.1
ResponseUri : https://jsonplaceholder.typicode.com/posts
Method : GET
IsFromCache : False

我们还可以在 RawContent 属性的前 25 行左右获得一些有用的信息,如此处所示。 RawContentraw,所以我在换行符上应用拆分,然后使用 [0..20] 描述的数组索引选择前 21 行。

$response.RawContent.Split("`n")[0..20]
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Origin, Accept-Encoding
Access-Control-Allow-Credentials: true
Pragma: no-cache
X-Content-Type-Options: nosniff
CF-Cache-Status: HIT
CF-RAY: 3c4e3f804f9d82f7-ATL
Cache-Control: public, max-age=14400
Content-Type: application/json; charset=utf-8
Date: Tue, 28 Nov 2017 15:09:23 GMT
Expires: Tue, 28 Nov 2017 19:09:23 GMT
ETag: W/"6b80-Ybsq/K6GwwqrYkAsFxqDXGC7DoM"
Set-Cookie: __cfduid=d84018de2d621df9d53eb52d97cd33a651511881763; expires=Wed, 28-Nov-18 15:09:23 GMT; path=/; domain=.typicode.com; HttpOnly
Server: cloudflare-nginx
Via: 1.1 vegur
X-Powered-By: Express

我同意如果能够取回这些信息也很好。我将在 github.com/PowerShell 存储库上提出一个问题,看看我们将来是否可以添加类似的内容,并将链接添加到此答案中。

关于powershell - 如何在 Invoke-WebRequest 中显示 TLS 握手信息和 CONNECT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com