Delphi 印第请求能被指纹识别吗?

Delphi 印第请求能被指纹识别吗?,delphi,indy,Delphi,Indy,我正在使用Delphi10开发一个项目,自动请求HTTPS来验证第三方服务。两天前,IdHTTP开始返回“403禁止错误”。 因此,我安装了Fiddler,并将Fiddler的ssl证书添加到Windows中,以解密ssl通信。在IdHTTP中,我做到了: HTTP.ProxyParams.ProxyServer := '127.0.0.1'; HTTP.ProxyParams.ProxyPort := 8888; 就像魔术一样,https服务正确地回答了200 OK。 因此,我删除了证书并再

我正在使用Delphi10开发一个项目,自动请求HTTPS来验证第三方服务。两天前,IdHTTP开始返回“403禁止错误”。 因此,我安装了Fiddler,并将Fiddler的ssl证书添加到Windows中,以解密ssl通信。在IdHTTP中,我做到了:

HTTP.ProxyParams.ProxyServer := '127.0.0.1';
HTTP.ProxyParams.ProxyPort := 8888;
就像魔术一样,https服务正确地回答了200 OK。 因此,我删除了证书并再次获得403,现在观察到IdSSLOpenSSL的OnStatusInfo,它是:

SSL status: "before/connect initialization"
SSL status: "before/connect initialization"
SSL status: "SSLv2/v3 write client hello A"
SSL status: "SSLv3 read server hello A"
SSL status: "SSLv3 read server certificate A"
SSL status: "SSLv3 read server key exchange A"
SSL status: "SSLv3 read server done A"
SSL status: "SSLv3 write client key exchange A"
SSL status: "SSLv3 write change cipher spec A"
SSL status: "SSLv3 write finished A"
SSL status: "SSLv3 flush data"
SSL status: "SSLv3 read server session ticket A"
SSL status: "SSLv3 read finished A"
SSL status: "SSL negotiation finished successfully"
SSL status: "SSL negotiation finished successfully"
Cipher: name = ECDHE-ECDSA-AES128-GCM-SHA256; description = ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
; bits = 128; version = TLSv1/SSLv3; 
这里看起来没有任何TLS错误。我的代码很简单:

procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHTTP;
  ssl: TIdSSLIOHandlerSocketOpenSSL;
  HTMLSource: String;
begin
  http:= TIdHTTP.Create(Nil);
  ssl:= TIdSSLIOHandlerSocketOpenSSL.Create(Nil);
  try
    ssl.SSLOptions.Method:= sslvTLSv1_2;
    ssl.SSLOptions.SSLVersions:= [sslvTLSv1_1, sslvTLSv1_2];
    ssl.OnStatusInfo:= OnSSLStatusInfo;
    http.IOHandler:= SSL;
    //http.AllowCookies:= true;
    //HTTP.ProxyParams.ProxyServer := '127.0.0.1';
    //HTTP.ProxyParams.ProxyPort := 8888;
    //http.Request.Accept:= 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
    //http.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36';
    //http.Request.Connection:= 'keep-alive';
    http.HandleRedirects:= true;
    http.ReadTimeout:= 15000;
    HTMLSource:= http.Get('https://redacted.com/');
    if (http.ResponseCode = 200) then
      Memo1.Text:= HTMLSource;
  finally
      ssl.Free;
      http.Free;
  end;
所有被评论的行都作为解决方案进行了尝试,但没有一行有效。安装了Fiddler证书并设置了代理,我不需要cookie、用户代理或其他任何东西来工作。也许这项服务不知何故对印地的自动请求提取了指纹,而Fiddler的代理欺骗了这一点?仍然不知道如何在不使用Fiddler代理/证书的情况下解决问题

IdConnectionIntercept的日志包括:

GET / HTTP/1.1
Host: redacted.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
---
HTTP/1.1 403 Forbidden
Server: cloudflare
Date: Thu, 11 Jun 2020 00:24:04 GMT
Content-Type: text/html
Content-Length: 151
Connection: keep-alive
CF-RAY: 5a172fe59902d07a-CWB
cf-request-id: 03425c437f0000d07a0696c200000001

<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>cloudflare</center>
</body>
</html>
GET/HTTP/1.1
主持人:redact.com
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
接受编码:标识
用户代理:Mozilla/3.0(兼容;Indy Library)
---
HTTP/1.1 403禁止
服务器:cloudflare
日期:2020年6月11日星期四00:24:04 GMT
内容类型:text/html
内容长度:151
连接:保持活力
CF-RAY:5a172fe59902d07a CWB
cf请求id:03425c437f0000d07a0696c200000001
403禁止
403禁止

云耀斑
使用设置为Fiddler代理的IdHTTP运行的日志(以及用于解密SSL流量的Fiddler证书):

CONNECT-redact.com:443 HTTP/1.1
Pragma:没有缓存
代理连接:保持活动状态
主持人:redact.com
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
用户代理:Mozilla/3.0(兼容;Indy Library)
---
已建立HTTP/1.1 200连接
FiddlerGateway:直接
开始时间:21:29:27.471
连接:关闭
---
GET/HTTP/1.1
主持人:redact.com
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
接受编码:标识
用户代理:Mozilla/3.0(兼容;Indy Library)
---
HTTP/1.1 301永久移动
日期:2020年6月11日星期四00:29:19 GMT
内容类型:text/html;字符集=utf-8
传输编码:分块
连接:保持活力
设置Cookie:uuu cfduid=d2453057d1303b17569dc77d925d4bd61591835359;expires=周六,格林威治标准时间7月11日00:29:19;路径=/;域名=.redact.com;HttpOnly;SameSite=Lax
X-Hat-PodId:80
地点:https://www.redacted.com/
X-Request-Id:df4074f2-a140-4488-9831-848a432641b8
X-Content-Type-Options:nosniff
X-下载-选项:noopen
X-允许-跨域-策略:无
CF缓存状态:动态
cf请求id:0342610fb40000d082169fc200000001
预期CT:最大年龄=604800,报告uri=”https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
服务器:cloudflare
CF-RAY:5a173792bedcd082 CWB
alt svc:h3-27=“:443”;ma=86400
你是在逃避责任。
出于隐私考虑,301答案的某些标题被删除


不知何故,Fiddler安装的用于解密SSL通信的证书使请求能够工作。我只是不知道为什么,也不知道如何在代码中解决这个问题。

与使用Fiddler不同,您可以通过SSL/TLS捕获
TIdHTTP
的HTTP流量的另一种方法是将Indy的
TIdLog…
组件之一分配给
TIdHTTP.Intercept
属性。然后,它将记录加密前的所有传出数据,以及解密后的所有传入数据。这将使您有更好的机会准确地看到
TIdHTTP
发送到服务器的内容,而无需Fiddler对其进行调整。@RemyLebeau:编辑了答案以包含IdConnectionIntercept捕获的日志。我使用这个是因为TIdLogEvent在发送/接收的事件上没有显示任何内容。这一个显示了一些日志,但没有任何提示答案。“我使用这一个是因为TIdLogEvent没有显示发送/接收事件的任何内容”-是的,它显示了(
TIdLogBase
源自
TIdConnectionIntercept
)。您可能只是没有正确设置它。Fiddler仅在与客户端通信时使用证书(
TIdHTTP
),但在使用HTTP
CONNECT
命令时与目标服务器通信时不使用证书,因为它只是作为一个直接传递,因此,客户端仍然与服务器协商SSL/TLS握手,以便服务器可以在需要时验证客户端的身份。所以,还有其他事情发生了。@RemyLebeau,当我删除fiddler证书(但保留IdHTTP上的代理设置)时,它停止工作,并再次给出403。也许这是服务器端的问题,有什么意义吗?仍然不知道理论上会是什么。不是TLS方面的专家。
CONNECT redacted.com:443 HTTP/1.1
Pragma: no-cache
Proxy-Connection: keep-alive
Host: redacted.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/3.0 (compatible; Indy Library)
---
HTTP/1.1 200 Connection Established
FiddlerGateway: Direct
StartTime: 21:29:27.471
Connection: close
---
GET / HTTP/1.1
Host: redacted.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
---
HTTP/1.1 301 Moved Permanently
Date: Thu, 11 Jun 2020 00:29:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d2453057d13003b17569dc77d925d4bd61591835359; expires=Sat, 11-Jul-20 00:29:19 GMT; path=/; domain=.redacted.com; HttpOnly; SameSite=Lax
X-Sorting-Hat-PodId: 80
Location: https://www.redacted.com/
X-Request-Id: df4074f2-a140-4488-9831-848a432641b8
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
CF-Cache-Status: DYNAMIC
cf-request-id: 0342610fb40000d082169fc200000001
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 5a173792bedcd082-CWB
alt-svc: h3-27=":443"; ma=86400

<html><body>You are being <a href="https://www.redacted.com/">redirected</a>.</body></html>