From cfa7f267fc25bfc1299eb07023b946eab96f957a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 5 Feb 2024 14:22:52 -0800 Subject: [PATCH] update schema --- docs/parsers/curl_head.md | 32 +++-- docs/parsers/http_headers.md | 48 ++++--- jc/parsers/curl_head.py | 32 +++-- jc/parsers/http_headers.py | 66 ++++++---- .../generic/curl_head--ILvs-cnn-com.json | 1 + .../generic/curl_head--ILvs-cnn-com.out | 115 ++++++++++++++++ .../generic/curl_head--ILvs-example-com.json | 2 +- .../generic/curl_head--ILvs-facebook-com.json | 1 + .../generic/curl_head--ILvs-facebook-com.out | 123 ++++++++++++++++++ .../generic/curl_head--ILvs-google-com.json | 2 +- .../curl_head--ILvs-microsoft-com.json | 1 + .../generic/curl_head--ILvs-microsoft-com.out | 64 +++++++++ .../generic/curl_head--ILvs-yahoo-com.json | 1 + .../generic/curl_head--ILvs-yahoo-com.out | 121 +++++++++++++++++ .../generic/http_headers--example-com.json | 2 +- .../generic/http_headers--google-com.json | 2 +- 16 files changed, 553 insertions(+), 60 deletions(-) create mode 100644 tests/fixtures/generic/curl_head--ILvs-cnn-com.json create mode 100644 tests/fixtures/generic/curl_head--ILvs-cnn-com.out create mode 100644 tests/fixtures/generic/curl_head--ILvs-facebook-com.json create mode 100644 tests/fixtures/generic/curl_head--ILvs-facebook-com.out create mode 100644 tests/fixtures/generic/curl_head--ILvs-microsoft-com.json create mode 100644 tests/fixtures/generic/curl_head--ILvs-microsoft-com.out create mode 100644 tests/fixtures/generic/curl_head--ILvs-yahoo-com.json create mode 100644 tests/fixtures/generic/curl_head--ILvs-yahoo-com.out diff --git a/docs/parsers/curl_head.md b/docs/parsers/curl_head.md index b12146f2..a9c70758 100644 --- a/docs/parsers/curl_head.md +++ b/docs/parsers/curl_head.md @@ -29,7 +29,17 @@ Schema: [ { + "_type": string, # request or response + "_request_method": string, + "_request_uri": string, + "_request_version": string, + "_response_version": string, + "_response_status": integer, + "_response_reason": string or null, "
": string, + + # well-known headers: + "accept": [ string ], @@ -144,12 +154,18 @@ Schema: "permissions-policy": [ string ], + "permissions-policy-report-only": [ + string + ], "pragma": [ string ], "proxy-authenticate": [ string ], + "reporting-endpoints": [ + string + ], "retry-after": string, "retry-after_epoch_utc": integer, "rtt": integer, @@ -205,10 +221,10 @@ Examples: $ curl --head www.example.com | jc --curl-head -p [ { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ @@ -237,10 +253,10 @@ Examples: $ curl --head www.example.com | jc --curl-head -p -r [ { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ diff --git a/docs/parsers/http_headers.md b/docs/parsers/http_headers.md index 29cc3ee5..f3d74a7c 100644 --- a/docs/parsers/http_headers.md +++ b/docs/parsers/http_headers.md @@ -34,7 +34,17 @@ Schema: [ { + "_type": string, # request or response + "_request_method": string, + "_request_uri": string, + "_request_version": string, + "_response_version": string, + "_response_status": integer, + "_response_reason": string or null, "
": string, + + # well-known headers: + "accept": [ string ], @@ -149,12 +159,18 @@ Schema: "permissions-policy": [ string ], + "permissions-policy-report-only": [ + string + ], "pragma": [ string ], "proxy-authenticate": [ string ], + "reporting-endpoints": [ + string + ], "retry-after": string, "retry-after_epoch_utc": integer, "rtt": integer, @@ -210,10 +226,10 @@ Examples: $ cat headers.txt | jc --http-headers -p [ { - "type": "request", - "request_method": "HEAD", - "request_uri": "/", - "request_version": "HTTP/1.1", + "_type": "request", + "_request_method": "HEAD", + "_request_uri": "/", + "_request_version": "HTTP/1.1", "host": "example.com", "user-agent": "curl/8.1.2", "accept": [ @@ -221,10 +237,10 @@ Examples: ] }, { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ @@ -253,10 +269,10 @@ Examples: $ cat headers.txt | jc --http-headers -p -r [ { - "type": "request", - "request_method": "HEAD", - "request_uri": "/", - "request_version": "HTTP/1.1", + "_type": "request", + "_request_method": "HEAD", + "_request_uri": "/", + "_request_version": "HTTP/1.1", "host": "example.com", "user-agent": "curl/8.1.2", "accept": [ @@ -264,10 +280,10 @@ Examples: ] }, { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ diff --git a/jc/parsers/curl_head.py b/jc/parsers/curl_head.py index bef0f37f..2c917a29 100644 --- a/jc/parsers/curl_head.py +++ b/jc/parsers/curl_head.py @@ -24,7 +24,17 @@ Schema: [ { + "_type": string, # request or response + "_request_method": string, + "_request_uri": string, + "_request_version": string, + "_response_version": string, + "_response_status": integer, + "_response_reason": string or null, "
": string, + + # well-known headers: + "accept": [ string ], @@ -139,12 +149,18 @@ Schema: "permissions-policy": [ string ], + "permissions-policy-report-only": [ + string + ], "pragma": [ string ], "proxy-authenticate": [ string ], + "reporting-endpoints": [ + string + ], "retry-after": string, "retry-after_epoch_utc": integer, "rtt": integer, @@ -200,10 +216,10 @@ Examples: $ curl --head www.example.com | jc --curl-head -p [ { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ @@ -232,10 +248,10 @@ Examples: $ curl --head www.example.com | jc --curl-head -p -r [ { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ diff --git a/jc/parsers/http_headers.py b/jc/parsers/http_headers.py index 0806e1ca..e1de8c3e 100644 --- a/jc/parsers/http_headers.py +++ b/jc/parsers/http_headers.py @@ -29,7 +29,17 @@ Schema: [ { + "_type": string, # request or response + "_request_method": string, + "_request_uri": string, + "_request_version": string, + "_response_version": string, + "_response_status": integer, + "_response_reason": string or null, "
": string, + + # well-known headers: + "accept": [ string ], @@ -144,12 +154,18 @@ Schema: "permissions-policy": [ string ], + "permissions-policy-report-only": [ + string + ], "pragma": [ string ], "proxy-authenticate": [ string ], + "reporting-endpoints": [ + string + ], "retry-after": string, "retry-after_epoch_utc": integer, "rtt": integer, @@ -205,10 +221,10 @@ Examples: $ cat headers.txt | jc --http-headers -p [ { - "type": "request", - "request_method": "HEAD", - "request_uri": "/", - "request_version": "HTTP/1.1", + "_type": "request", + "_request_method": "HEAD", + "_request_uri": "/", + "_request_version": "HTTP/1.1", "host": "example.com", "user-agent": "curl/8.1.2", "accept": [ @@ -216,10 +232,10 @@ Examples: ] }, { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ @@ -248,10 +264,10 @@ Examples: $ cat headers.txt | jc --http-headers -p -r [ { - "type": "request", - "request_method": "HEAD", - "request_uri": "/", - "request_version": "HTTP/1.1", + "_type": "request", + "_request_method": "HEAD", + "_request_uri": "/", + "_request_version": "HTTP/1.1", "host": "example.com", "user-agent": "curl/8.1.2", "accept": [ @@ -259,10 +275,10 @@ Examples: ] }, { - "type": "response", - "response_version": "HTTP/1.1", - "response_status": 200, - "response_reason": [ + "_type": "response", + "_response_version": "HTTP/1.1", + "_response_status": 200, + "_response_reason": [ "OK" ], "accept-ranges": [ @@ -375,8 +391,10 @@ SPLIT_AND_MULTI_HEADERS = { 'keep-alive', 'link', 'permissions-policy', + 'permissions-policy-report-only', 'pragma', 'proxy-authenticate', + 'reporting-endpoints', 'sec-ch-ua', 'sec-ch-ua-full-version-list', 'server', @@ -470,10 +488,10 @@ def parse( method, uri, version = line.split(maxsplit=2) output_object = {} - output_object['type'] = 'request' - output_object['request_method'] = method - output_object['request_uri'] = uri - output_object['request_version'] = version + output_object['_type'] = 'request' + output_object['_request_method'] = method + output_object['_request_uri'] = uri + output_object['_request_version'] = version continue if first_word.startswith('http/'): @@ -483,10 +501,10 @@ def parse( reason = None version, status, *reason = line.split(maxsplit=2) output_object = {} - output_object['type'] = 'response' - output_object['response_version'] = version - output_object['response_status'] = int(status) - output_object['response_reason'] = reason or None + output_object['_type'] = 'response' + output_object['_response_version'] = version + output_object['_response_status'] = int(status) + output_object['_response_reason'] = reason or None continue if first_word in SPLIT_AND_MULTI_HEADERS: diff --git a/tests/fixtures/generic/curl_head--ILvs-cnn-com.json b/tests/fixtures/generic/curl_head--ILvs-cnn-com.json new file mode 100644 index 00000000..0c8b6bf2 --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-cnn-com.json @@ -0,0 +1 @@ +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"cnn.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"connection":["close"],"content-length":0,"server":["Varnish"],"retry-after":0,"cache-control":["public","max-age=300"],"location":"http://www.cnn.com/","accept-ranges":["bytes"],"date":"Mon, 05 Feb 2024 21:14:25 GMT","via":["1.1 varnish"],"set-cookie":["countryCode=US; Domain=.cnn.com; Path=/; SameSite=Lax","stateCode=CA; Domain=.cnn.com; Path=/; SameSite=Lax","geoData=san francisco|CA|94122|US|NA|-800|broadband|37.760|-122.480|807; Domain=.cnn.com; Path=/; SameSite=Lax"],"x-served-by":"cache-pao-kpao1770073-PAO","x-cache":"HIT","x-cache-hits":[0],"alt-svc":["h3=\":443\";ma=86400","h3-29=\":443\";ma=86400","h3-27=\":443\";ma=86400"],"date_epoch_utc":1707167665},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"www.cnn.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"connection":["close"],"content-length":0,"server":["Varnish"],"retry-after":0,"cache-control":["public","max-age=300"],"location":"https://www.cnn.com/","accept-ranges":["bytes"],"date":"Mon, 05 Feb 2024 21:14:25 GMT","via":["1.1 varnish"],"set-cookie":["countryCode=US; Domain=.cnn.com; Path=/; SameSite=Lax","stateCode=CA; Domain=.cnn.com; Path=/; SameSite=Lax","geoData=san francisco|CA|94122|US|NA|-800|broadband|37.760|-122.480|807; Domain=.cnn.com; Path=/; SameSite=Lax"],"x-served-by":"cache-pao-kpao1770065-PAO","x-cache":"HIT","x-cache-hits":[0],"alt-svc":["h3=\":443\";ma=86400","h3-29=\":443\";ma=86400","h3-27=\":443\";ma=86400"],"date_epoch_utc":1707167665},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/2","host":"www.cnn.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/2","_response_status":200,"_response_reason":null,"content-type":"text/html; charset=utf-8","x-content-hub":"build-env=prod; unique-deployment-key=rn01302n; build-version=v5.1.8-0-g2fef6dfb03; build-commit-hash=2fef6dfb0320b41a52ef682618778884553d483f","access-control-allow-origin":"*","cache-control":["max-age=60"],"content-security-policy":["default-src 'self' blob: https://*.cnn.com:* http://*.cnn.com:* *.cnn.io:* *.cnn.net:* *.turner.com:* *.turner.io:* *.ugdturner.com:* courageousstudio.com *.vgtf.net:*; script-src 'unsafe-eval' 'unsafe-inline' 'self' *; style-src 'unsafe-inline' 'self' blob: *; child-src 'self' blob: *; frame-src 'self' *; object-src 'self' *; img-src 'self' data: blob: *; media-src 'self' data: blob: *; font-src 'self' data: *; connect-src 'self' data: *; frame-ancestors 'self' https://*.cnn.com:* http://*.cnn.com https://*.cnn.io:* http://*.cnn.io:* *.turner.com:* courageousstudio.com;"],"x-content-type-options":"nosniff","x-xss-protection":"1; mode=block","x-last-modified":"Mon, 05 Feb 2024 21:12:57 GMT","via":["1.1 varnish","1.1 varnish"],"accept-ranges":["bytes"],"date":"Mon, 05 Feb 2024 21:14:26 GMT","age":56,"set-cookie":["countryCode=US; Domain=.cnn.com; Path=/; SameSite=None; Secure","stateCode=CA; Domain=.cnn.com; Path=/; SameSite=None; Secure","geoData=san francisco|CA|94122|US|NA|-800|broadband|37.760|-122.480|807; Domain=.cnn.com; Path=/; SameSite=None; Secure","FastAB=0=1932,1=4478,2=2018,3=7891,4=5506,5=2540,6=3536,7=0344,8=7062,9=0477,10=9516,11=5683,12=1628,13=1765,14=3504,15=0865,16=4713,17=3600,18=0788,19=8777; Domain=.cnn.com; Path=/; Expires=Tue, 04 Feb 2025 21:14:26 GMT; SameSite=Lax"],"x-served-by":"cache-iad-kjyo7100119-IAD, cache-pao-kpao1770021-PAO","x-cache":"HIT, HIT","x-cache-hits":[43,3],"x-timer":"S1707167666.020036,VS0,VE1","vary":["Accept-Encoding","Accept-Language","Origin"],"alt-svc":["h3=\":443\";ma=86400","h3-29=\":443\";ma=86400","h3-27=\":443\";ma=86400"],"content-length":3042067,"date_epoch_utc":1707167666}] diff --git a/tests/fixtures/generic/curl_head--ILvs-cnn-com.out b/tests/fixtures/generic/curl_head--ILvs-cnn-com.out new file mode 100644 index 00000000..89044154 --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-cnn-com.out @@ -0,0 +1,115 @@ +* Trying [2a04:4e42:a00::773]:80... +* Connected to cnn.com (2a04:4e42:a00::773) port 80 (#0) +> HEAD / HTTP/1.1 +> Host: cnn.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/1.1 301 Moved Permanently +< Connection: close +< Content-Length: 0 +< Server: Varnish +< Retry-After: 0 +< Cache-Control: public, max-age=300 +< Location: http://www.cnn.com/ +< Accept-Ranges: bytes +< Date: Mon, 05 Feb 2024 21:14:25 GMT +< Via: 1.1 varnish +< Set-Cookie: countryCode=US; Domain=.cnn.com; Path=/; SameSite=Lax +< Set-Cookie: stateCode=CA; Domain=.cnn.com; Path=/; SameSite=Lax +< Set-Cookie: geoData=san francisco|CA|94122|US|NA|-800|broadband|37.760|-122.480|807; Domain=.cnn.com; Path=/; SameSite=Lax +< X-Served-By: cache-pao-kpao1770073-PAO +< X-Cache: HIT +< X-Cache-Hits: 0 +< alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 +< +* Closing connection 0 +* Issue another request to this URL: 'http://www.cnn.com/' +* Trying [2a04:4e42:2f::773]:80... +* Connected to www.cnn.com (2a04:4e42:2f::773) port 80 (#1) +> HEAD / HTTP/1.1 +> Host: www.cnn.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/1.1 301 Moved Permanently +< Connection: close +< Content-Length: 0 +< Server: Varnish +< Retry-After: 0 +< Cache-Control: public, max-age=300 +< Location: https://www.cnn.com/ +< Accept-Ranges: bytes +< Date: Mon, 05 Feb 2024 21:14:25 GMT +< Via: 1.1 varnish +< Set-Cookie: countryCode=US; Domain=.cnn.com; Path=/; SameSite=Lax +< Set-Cookie: stateCode=CA; Domain=.cnn.com; Path=/; SameSite=Lax +< Set-Cookie: geoData=san francisco|CA|94122|US|NA|-800|broadband|37.760|-122.480|807; Domain=.cnn.com; Path=/; SameSite=Lax +< X-Served-By: cache-pao-kpao1770065-PAO +< X-Cache: HIT +< X-Cache-Hits: 0 +< alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 +< +* Closing connection 1 +* Clear auth, redirects to port from 80 to 443 +* Issue another request to this URL: 'https://www.cnn.com/' +* Trying [2a04:4e42:2f::773]:443... +* Connected to www.cnn.com (2a04:4e42:2f::773) port 443 (#2) +* ALPN: offers h2,http/1.1 +* (304) (OUT), TLS handshake, Client hello (1): +* CAfile: /etc/ssl/cert.pem +* CApath: none +* (304) (IN), TLS handshake, Server hello (2): +* (304) (IN), TLS handshake, Unknown (8): +* (304) (IN), TLS handshake, Certificate (11): +* (304) (IN), TLS handshake, CERT verify (15): +* (304) (IN), TLS handshake, Finished (20): +* (304) (OUT), TLS handshake, Finished (20): +* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 +* ALPN: server accepted h2 +* Server certificate: +* subject: CN=cnn.com +* start date: Sep 12 19:38:05 2023 GMT +* expire date: Oct 13 19:38:04 2024 GMT +* subjectAltName: host "www.cnn.com" matched cert's "*.cnn.com" +* issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2023 Q3 +* SSL certificate verify ok. +* using HTTP/2 +* h2 [:method: HEAD] +* h2 [:scheme: https] +* h2 [:authority: www.cnn.com] +* h2 [:path: /] +* h2 [user-agent: curl/8.1.2] +* h2 [accept: */*] +* Using Stream ID: 1 (easy handle 0x7f82d780a800) +> HEAD / HTTP/2 +> Host: www.cnn.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/2 200 +< content-type: text/html; charset=utf-8 +< x-content-hub: build-env=prod; unique-deployment-key=rn01302n; build-version=v5.1.8-0-g2fef6dfb03; build-commit-hash=2fef6dfb0320b41a52ef682618778884553d483f +< access-control-allow-origin: * +< cache-control: max-age=60 +< content-security-policy: default-src 'self' blob: https://*.cnn.com:* http://*.cnn.com:* *.cnn.io:* *.cnn.net:* *.turner.com:* *.turner.io:* *.ugdturner.com:* courageousstudio.com *.vgtf.net:*; script-src 'unsafe-eval' 'unsafe-inline' 'self' *; style-src 'unsafe-inline' 'self' blob: *; child-src 'self' blob: *; frame-src 'self' *; object-src 'self' *; img-src 'self' data: blob: *; media-src 'self' data: blob: *; font-src 'self' data: *; connect-src 'self' data: *; frame-ancestors 'self' https://*.cnn.com:* http://*.cnn.com https://*.cnn.io:* http://*.cnn.io:* *.turner.com:* courageousstudio.com; +< x-content-type-options: nosniff +< x-xss-protection: 1; mode=block +< x-last-modified: Mon, 05 Feb 2024 21:12:57 GMT +< via: 1.1 varnish, 1.1 varnish +< accept-ranges: bytes +< date: Mon, 05 Feb 2024 21:14:26 GMT +< age: 56 +< set-cookie: countryCode=US; Domain=.cnn.com; Path=/; SameSite=None; Secure +< set-cookie: stateCode=CA; Domain=.cnn.com; Path=/; SameSite=None; Secure +< set-cookie: geoData=san francisco|CA|94122|US|NA|-800|broadband|37.760|-122.480|807; Domain=.cnn.com; Path=/; SameSite=None; Secure +< set-cookie: FastAB=0=1932,1=4478,2=2018,3=7891,4=5506,5=2540,6=3536,7=0344,8=7062,9=0477,10=9516,11=5683,12=1628,13=1765,14=3504,15=0865,16=4713,17=3600,18=0788,19=8777; Domain=.cnn.com; Path=/; Expires=Tue, 04 Feb 2025 21:14:26 GMT; SameSite=Lax +< x-served-by: cache-iad-kjyo7100119-IAD, cache-pao-kpao1770021-PAO +< x-cache: HIT, HIT +< x-cache-hits: 43, 3 +< x-timer: S1707167666.020036,VS0,VE1 +< vary: Accept-Encoding, Accept-Language,Origin +< alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 +< content-length: 3042067 +< +* Connection #2 to host www.cnn.com left intact diff --git a/tests/fixtures/generic/curl_head--ILvs-example-com.json b/tests/fixtures/generic/curl_head--ILvs-example-com.json index 99fa4e9c..5636d796 100644 --- a/tests/fixtures/generic/curl_head--ILvs-example-com.json +++ b/tests/fixtures/generic/curl_head--ILvs-example-com.json @@ -1 +1 @@ -[{"type":"request","request_method":"HEAD","request_uri":"/","request_version":"HTTP/1.1","host":"example.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"type":"response","response_version":"HTTP/1.1","response_status":200,"response_reason":["OK"],"accept-ranges":["bytes"],"age":155553,"cache-control":["max-age=604800"],"content-type":"text/html; charset=UTF-8","date":"Sun, 04 Feb 2024 04:09:08 GMT","etag":"\"3147526947\"","expires":"Sun, 11 Feb 2024 04:09:08 GMT","last-modified":"Thu, 17 Oct 2019 07:18:26 GMT","server":["ECS (sac/2575)"],"x-cache":"HIT","content-length":1256,"date_epoch_utc":1707019748,"expires_epoch_utc":1707624548,"last-modified_epoch_utc":1571296706},{"type":"request","request_method":"HEAD","request_uri":"/","request_version":"HTTP/1.1","host":"google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"type":"response","response_version":"HTTP/1.1","response_status":301,"response_reason":["Moved Permanently"],"location":"http://www.google.com/","content-type":"text/html; charset=UTF-8","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-h6Y2V2d8R2XnuFpYfdFwBw' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"date":"Sun, 04 Feb 2024 04:09:18 GMT","expires":"Tue, 05 Mar 2024 04:09:18 GMT","cache-control":["public","max-age=2592000"],"server":["gws"],"content-length":219,"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","date_epoch_utc":1707019758,"expires_epoch_utc":1709611758},{"type":"request","request_method":"HEAD","request_uri":"/","request_version":"HTTP/1.1","host":"www.google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"type":"response","response_version":"HTTP/1.1","response_status":200,"response_reason":["OK"],"content-type":"text/html; charset=ISO-8859-1","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-rPJVLmgNCmplCGI-2Clr8Q' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"p3p":"CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"","date":"Sun, 04 Feb 2024 04:09:18 GMT","server":["gws"],"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","transfer-encoding":["chunked"],"expires":"Sun, 04 Feb 2024 04:09:18 GMT","cache-control":["private"],"set-cookie":["1P_JAR=2024-02-04-04; expires=Tue, 05-Mar-2024 04:09:18 GMT; path=/; domain=.google.com; Secure","AEC=Ae3NU9Oy-3rzqylRQBgIaeX68Gx3KlkSE8tsoeXZ7xlP6SZ91VmyvVn4vw; expires=Fri, 02-Aug-2024 04:09:18 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax","NID=511=BQdbZ7khjSQZ_Q8XQ9l5pUR0EA6vAT9Ww2tmedQFqp22X9N8e3IfUR5CrSL5zK5_hU_H6ApeyI7ekrOIK8HDYQ_KLkYhrTZZa5pLY4ggfbJDIG0eOExq90kPD7r5iGZnGs4Zm3w2TXua-yGy1NpQeCDqC5BZrwlmrQqqYFF8lHs; expires=Mon, 05-Aug-2024 04:09:18 GMT; path=/; domain=.google.com; HttpOnly"],"date_epoch_utc":1707019758,"expires_epoch_utc":1707019758}] +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"example.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":200,"_response_reason":["OK"],"accept-ranges":["bytes"],"age":155553,"cache-control":["max-age=604800"],"content-type":"text/html; charset=UTF-8","date":"Sun, 04 Feb 2024 04:09:08 GMT","etag":"\"3147526947\"","expires":"Sun, 11 Feb 2024 04:09:08 GMT","last-modified":"Thu, 17 Oct 2019 07:18:26 GMT","server":["ECS (sac/2575)"],"x-cache":"HIT","content-length":1256,"date_epoch_utc":1707019748,"expires_epoch_utc":1707624548,"last-modified_epoch_utc":1571296706},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"location":"http://www.google.com/","content-type":"text/html; charset=UTF-8","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-h6Y2V2d8R2XnuFpYfdFwBw' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"date":"Sun, 04 Feb 2024 04:09:18 GMT","expires":"Tue, 05 Mar 2024 04:09:18 GMT","cache-control":["public","max-age=2592000"],"server":["gws"],"content-length":219,"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","date_epoch_utc":1707019758,"expires_epoch_utc":1709611758},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"www.google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":200,"_response_reason":["OK"],"content-type":"text/html; charset=ISO-8859-1","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-rPJVLmgNCmplCGI-2Clr8Q' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"p3p":"CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"","date":"Sun, 04 Feb 2024 04:09:18 GMT","server":["gws"],"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","transfer-encoding":["chunked"],"expires":"Sun, 04 Feb 2024 04:09:18 GMT","cache-control":["private"],"set-cookie":["1P_JAR=2024-02-04-04; expires=Tue, 05-Mar-2024 04:09:18 GMT; path=/; domain=.google.com; Secure","AEC=Ae3NU9Oy-3rzqylRQBgIaeX68Gx3KlkSE8tsoeXZ7xlP6SZ91VmyvVn4vw; expires=Fri, 02-Aug-2024 04:09:18 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax","NID=511=BQdbZ7khjSQZ_Q8XQ9l5pUR0EA6vAT9Ww2tmedQFqp22X9N8e3IfUR5CrSL5zK5_hU_H6ApeyI7ekrOIK8HDYQ_KLkYhrTZZa5pLY4ggfbJDIG0eOExq90kPD7r5iGZnGs4Zm3w2TXua-yGy1NpQeCDqC5BZrwlmrQqqYFF8lHs; expires=Mon, 05-Aug-2024 04:09:18 GMT; path=/; domain=.google.com; HttpOnly"],"date_epoch_utc":1707019758,"expires_epoch_utc":1707019758}] diff --git a/tests/fixtures/generic/curl_head--ILvs-facebook-com.json b/tests/fixtures/generic/curl_head--ILvs-facebook-com.json new file mode 100644 index 00000000..9c68beba --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-facebook-com.json @@ -0,0 +1 @@ +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"facebook.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"location":"https://facebook.com/","content-type":"text/plain","server":["proxygen-bolt"],"date":"Mon, 05 Feb 2024 21:22:49 GMT","connection":["keep-alive"],"content-length":0,"date_epoch_utc":1707168169},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/2","host":"facebook.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/2","_response_status":301,"_response_reason":null,"set-cookie":["ps_l=0; expires=Tue, 11-Mar-2025 21:22:50 GMT; Max-Age=34560000; path=/; domain=.facebook.com; secure; httponly; SameSite=Lax","ps_n=0; expires=Tue, 11-Mar-2025 21:22:50 GMT; Max-Age=34560000; path=/; domain=.facebook.com; secure; httponly"],"location":"https://www.facebook.com/","strict-transport-security":"max-age=15552000; preload","content-type":"text/html; charset=\"utf-8\"","x-fb-debug":"2j+kJ+FLX0yR12pPEltJ52zEbsrHw+fOYLYmIOMuZqouTP9KxNTEzlM/gmyDt3r7J1+bkB3iLRfe4uTdeW68Ng==","content-length":0,"date":"Mon, 05 Feb 2024 21:22:50 GMT","alt-svc":["h3=\":443\"; ma=86400"],"date_epoch_utc":1707168170},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/2","host":"www.facebook.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/2","_response_status":200,"_response_reason":null,"vary":["Accept-Encoding"],"set-cookie":["fr=0JtMe9XzGAxU4UTPQ..BlwVGq.4w.AAA.0.0.BlwVGq.AWWEG1hsBWA; expires=Sun, 05-May-2024 21:22:50 GMT; Max-Age=7776000; path=/; domain=.facebook.com; secure; httponly","sb=qlHBZb0mHcjQnEcJFW7xyFWx; expires=Tue, 11-Mar-2025 21:22:50 GMT; Max-Age=34560000; path=/; domain=.facebook.com; secure; httponly"],"reporting-endpoints":["coop_report=\"https://www.facebook.com/browser_reporting/coop/?minimize=0\"","coep_report=\"https://www.facebook.com/browser_reporting/coep/?minimize=0\"","default=\"https://www.facebook.com/ajax/browser_error_reports/?device_level=unknown\""],"report-to":"{\"max_age\":2592000,\"endpoints\":[{\"url\":\"https:\\/\\/www.facebook.com\\/browser_reporting\\/coop\\/?minimize=0\"}],\"group\":\"coop_report\",\"include_subdomains\":true}, {\"max_age\":86400,\"endpoints\":[{\"url\":\"https:\\/\\/www.facebook.com\\/browser_reporting\\/coep\\/?minimize=0\"}],\"group\":\"coep_report\"}, {\"max_age\":259200,\"endpoints\":[{\"url\":\"https:\\/\\/www.facebook.com\\/ajax\\/browser_error_reports\\/?device_level=unknown\"}]}","content-security-policy":["default-src data: blob: 'self' https://*.fbsbx.com 'unsafe-inline' *.facebook.com *.fbcdn.net 'unsafe-eval';script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.google.com 127.0.0.1:* 'unsafe-inline' blob: data: 'self' connect.facebook.net 'unsafe-eval';style-src fonts.googleapis.com *.fbcdn.net data: *.facebook.com 'unsafe-inline';connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net wss://*.facebook.com:* wss://*.whatsapp.com:* wss://*.fbcdn.net attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' http://localhost:3103 wss://gateway.facebook.com wss://edge-chat.facebook.com wss://snaptu-d.facebook.com wss://kaios-d.facebook.com/ v.whatsapp.net *.fbsbx.com *.fb.com;font-src data: *.gstatic.com *.facebook.com *.fbcdn.net *.fbsbx.com;img-src *.fbcdn.net *.facebook.com data: https://*.fbsbx.com facebook.com *.cdninstagram.com fbsbx.com fbcdn.net connect.facebook.net *.carriersignal.info blob: android-webview-video-poster: googleads.g.doubleclick.net www.googleadservices.com *.whatsapp.net *.fb.com *.oculuscdn.com *.tenor.co media.tenor.com *.tenor.com *.giphy.com;media-src *.cdninstagram.com blob: *.fbcdn.net *.fbsbx.com www.facebook.com *.facebook.com data: https://*.giphy.com;frame-src *.doubleclick.net *.google.com *.facebook.com www.googleadservices.com *.fbsbx.com fbsbx.com data: www.instagram.com *.fbcdn.net https://paywithmybank.com/ https://sandbox.paywithmybank.com/;worker-src blob: *.facebook.com data:;block-all-mixed-content;upgrade-insecure-requests;"],"document-policy":"force-load-at-top","permissions-policy-report-only":["autoplay=()","clipboard-read=()","clipboard-write=()"],"permissions-policy":["accelerometer=()","ambient-light-sensor=()","bluetooth=()","camera=(self)","display-capture=(self)","encrypted-media=(self)","fullscreen=(self)","gamepad=*","geolocation=(self)","gyroscope=()","hid=()","idle-detection=()","keyboard-map=()","local-fonts=()","magnetometer=()","microphone=(self)","midi=()","otp-credentials=()","payment=()","picture-in-picture=(self)","publickey-credentials-get=(self)","screen-wake-lock=()","serial=()","usb=()","window-management=()","xr-spatial-tracking=(self)"],"cross-origin-resource-policy":"cross-origin","cross-origin-embedder-policy-report-only":"require-corp;report-to=\"coep_report\"","cross-origin-opener-policy":"unsafe-none;report-to=\"coop_report\"","pragma":["no-cache"],"cache-control":["private","no-cache","no-store","must-revalidate"],"expires":"Sat, 01 Jan 2000 00:00:00 GMT","x-content-type-options":"nosniff","x-xss-protection":"0","x-frame-options":"DENY","strict-transport-security":"max-age=15552000; preload","content-type":"text/html; charset=\"utf-8\"","x-fb-debug":"tqxq26xUwM9+sc7Ys7wd1wgJuEwu+VhACt9k9eDZH8rpRstnM9ovCBSSP2RgXSxH4SQQUFyJjQrV543ONo++1A==","date":"Mon, 05 Feb 2024 21:22:50 GMT","alt-svc":["h3=\":443\"; ma=86400"],"expires_epoch_utc":946684800,"date_epoch_utc":1707168170}] diff --git a/tests/fixtures/generic/curl_head--ILvs-facebook-com.out b/tests/fixtures/generic/curl_head--ILvs-facebook-com.out new file mode 100644 index 00000000..8ac6f305 --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-facebook-com.out @@ -0,0 +1,123 @@ +* Trying [2a03:2880:f131:83:face:b00c:0:25de]:80... +* Connected to facebook.com (2a03:2880:f131:83:face:b00c:0:25de) port 80 (#0) +> HEAD / HTTP/1.1 +> Host: facebook.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/1.1 301 Moved Permanently +< Location: https://facebook.com/ +< Content-Type: text/plain +< Server: proxygen-bolt +< Date: Mon, 05 Feb 2024 21:22:49 GMT +< Connection: keep-alive +< Content-Length: 0 +< +* Connection #0 to host facebook.com left intact +* Clear auth, redirects to port from 80 to 443 +* Issue another request to this URL: 'https://facebook.com/' +* Trying [2a03:2880:f131:83:face:b00c:0:25de]:443... +* Connected to facebook.com (2a03:2880:f131:83:face:b00c:0:25de) port 443 (#1) +* ALPN: offers h2,http/1.1 +* (304) (OUT), TLS handshake, Client hello (1): +* CAfile: /etc/ssl/cert.pem +* CApath: none +* (304) (IN), TLS handshake, Server hello (2): +* (304) (IN), TLS handshake, Unknown (8): +* (304) (IN), TLS handshake, Certificate (11): +* (304) (IN), TLS handshake, CERT verify (15): +* (304) (IN), TLS handshake, Finished (20): +* (304) (OUT), TLS handshake, Finished (20): +* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 +* ALPN: server accepted h2 +* Server certificate: +* subject: C=US; ST=California; L=Menlo Park; O=Meta Platforms, Inc.; CN=*.facebook.com +* start date: Nov 15 00:00:00 2023 GMT +* expire date: Feb 13 23:59:59 2024 GMT +* subjectAltName: host "facebook.com" matched cert's "facebook.com" +* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA +* SSL certificate verify ok. +* using HTTP/2 +* h2 [:method: HEAD] +* h2 [:scheme: https] +* h2 [:authority: facebook.com] +* h2 [:path: /] +* h2 [user-agent: curl/8.1.2] +* h2 [accept: */*] +* Using Stream ID: 1 (easy handle 0x7fcc1b013400) +> HEAD / HTTP/2 +> Host: facebook.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/2 301 +< set-cookie: ps_l=0; expires=Tue, 11-Mar-2025 21:22:50 GMT; Max-Age=34560000; path=/; domain=.facebook.com; secure; httponly; SameSite=Lax +< set-cookie: ps_n=0; expires=Tue, 11-Mar-2025 21:22:50 GMT; Max-Age=34560000; path=/; domain=.facebook.com; secure; httponly +< location: https://www.facebook.com/ +< strict-transport-security: max-age=15552000; preload +< content-type: text/html; charset="utf-8" +< x-fb-debug: 2j+kJ+FLX0yR12pPEltJ52zEbsrHw+fOYLYmIOMuZqouTP9KxNTEzlM/gmyDt3r7J1+bkB3iLRfe4uTdeW68Ng== +< content-length: 0 +< date: Mon, 05 Feb 2024 21:22:50 GMT +< alt-svc: h3=":443"; ma=86400 +< +* Connection #1 to host facebook.com left intact +* Issue another request to this URL: 'https://www.facebook.com/' +* Trying [2a03:2880:f131:83:face:b00c:0:25de]:443... +* Connected to www.facebook.com (2a03:2880:f131:83:face:b00c:0:25de) port 443 (#2) +* ALPN: offers h2,http/1.1 +* (304) (OUT), TLS handshake, Client hello (1): +* (304) (IN), TLS handshake, Server hello (2): +* (304) (IN), TLS handshake, Unknown (8): +* (304) (IN), TLS handshake, Certificate (11): +* (304) (IN), TLS handshake, CERT verify (15): +* (304) (IN), TLS handshake, Finished (20): +* (304) (OUT), TLS handshake, Finished (20): +* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 +* ALPN: server accepted h2 +* Server certificate: +* subject: C=US; ST=California; L=Menlo Park; O=Meta Platforms, Inc.; CN=*.facebook.com +* start date: Nov 15 00:00:00 2023 GMT +* expire date: Feb 13 23:59:59 2024 GMT +* subjectAltName: host "www.facebook.com" matched cert's "*.facebook.com" +* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA +* SSL certificate verify ok. +* using HTTP/2 +* h2 [:method: HEAD] +* h2 [:scheme: https] +* h2 [:authority: www.facebook.com] +* h2 [:path: /] +* h2 [user-agent: curl/8.1.2] +* h2 [accept: */*] +* Using Stream ID: 1 (easy handle 0x7fcc1b013400) +> HEAD / HTTP/2 +> Host: www.facebook.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/2 200 +< vary: Accept-Encoding +< set-cookie: fr=0JtMe9XzGAxU4UTPQ..BlwVGq.4w.AAA.0.0.BlwVGq.AWWEG1hsBWA; expires=Sun, 05-May-2024 21:22:50 GMT; Max-Age=7776000; path=/; domain=.facebook.com; secure; httponly +< set-cookie: sb=qlHBZb0mHcjQnEcJFW7xyFWx; expires=Tue, 11-Mar-2025 21:22:50 GMT; Max-Age=34560000; path=/; domain=.facebook.com; secure; httponly +< reporting-endpoints: coop_report="https://www.facebook.com/browser_reporting/coop/?minimize=0", coep_report="https://www.facebook.com/browser_reporting/coep/?minimize=0", default="https://www.facebook.com/ajax/browser_error_reports/?device_level=unknown" +< report-to: {"max_age":2592000,"endpoints":[{"url":"https:\/\/www.facebook.com\/browser_reporting\/coop\/?minimize=0"}],"group":"coop_report","include_subdomains":true}, {"max_age":86400,"endpoints":[{"url":"https:\/\/www.facebook.com\/browser_reporting\/coep\/?minimize=0"}],"group":"coep_report"}, {"max_age":259200,"endpoints":[{"url":"https:\/\/www.facebook.com\/ajax\/browser_error_reports\/?device_level=unknown"}]} +< content-security-policy: default-src data: blob: 'self' https://*.fbsbx.com 'unsafe-inline' *.facebook.com *.fbcdn.net 'unsafe-eval';script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.google.com 127.0.0.1:* 'unsafe-inline' blob: data: 'self' connect.facebook.net 'unsafe-eval';style-src fonts.googleapis.com *.fbcdn.net data: *.facebook.com 'unsafe-inline';connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net wss://*.facebook.com:* wss://*.whatsapp.com:* wss://*.fbcdn.net attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' http://localhost:3103 wss://gateway.facebook.com wss://edge-chat.facebook.com wss://snaptu-d.facebook.com wss://kaios-d.facebook.com/ v.whatsapp.net *.fbsbx.com *.fb.com;font-src data: *.gstatic.com *.facebook.com *.fbcdn.net *.fbsbx.com;img-src *.fbcdn.net *.facebook.com data: https://*.fbsbx.com facebook.com *.cdninstagram.com fbsbx.com fbcdn.net connect.facebook.net *.carriersignal.info blob: android-webview-video-poster: googleads.g.doubleclick.net www.googleadservices.com *.whatsapp.net *.fb.com *.oculuscdn.com *.tenor.co media.tenor.com *.tenor.com *.giphy.com;media-src *.cdninstagram.com blob: *.fbcdn.net *.fbsbx.com www.facebook.com *.facebook.com data: https://*.giphy.com;frame-src *.doubleclick.net *.google.com *.facebook.com www.googleadservices.com *.fbsbx.com fbsbx.com data: www.instagram.com *.fbcdn.net https://paywithmybank.com/ https://sandbox.paywithmybank.com/;worker-src blob: *.facebook.com data:;block-all-mixed-content;upgrade-insecure-requests; +< document-policy: force-load-at-top +< permissions-policy-report-only: autoplay=(), clipboard-read=(), clipboard-write=() +< permissions-policy: accelerometer=(), ambient-light-sensor=(), bluetooth=(), camera=(self), display-capture=(self), encrypted-media=(self), fullscreen=(self), gamepad=*, geolocation=(self), gyroscope=(), hid=(), idle-detection=(), keyboard-map=(), local-fonts=(), magnetometer=(), microphone=(self), midi=(), otp-credentials=(), payment=(), picture-in-picture=(self), publickey-credentials-get=(self), screen-wake-lock=(), serial=(), usb=(), window-management=(), xr-spatial-tracking=(self) +< cross-origin-resource-policy: cross-origin +< cross-origin-embedder-policy-report-only: require-corp;report-to="coep_report" +< cross-origin-opener-policy: unsafe-none;report-to="coop_report" +< pragma: no-cache +< cache-control: private, no-cache, no-store, must-revalidate +< expires: Sat, 01 Jan 2000 00:00:00 GMT +< x-content-type-options: nosniff +< x-xss-protection: 0 +< x-frame-options: DENY +< strict-transport-security: max-age=15552000; preload +< content-type: text/html; charset="utf-8" +< x-fb-debug: tqxq26xUwM9+sc7Ys7wd1wgJuEwu+VhACt9k9eDZH8rpRstnM9ovCBSSP2RgXSxH4SQQUFyJjQrV543ONo++1A== +< date: Mon, 05 Feb 2024 21:22:50 GMT +< alt-svc: h3=":443"; ma=86400 +< +* Connection #2 to host www.facebook.com left intact diff --git a/tests/fixtures/generic/curl_head--ILvs-google-com.json b/tests/fixtures/generic/curl_head--ILvs-google-com.json index 100edbf9..a4315f43 100644 --- a/tests/fixtures/generic/curl_head--ILvs-google-com.json +++ b/tests/fixtures/generic/curl_head--ILvs-google-com.json @@ -1 +1 @@ -[{"type":"request","request_method":"HEAD","request_uri":"/","request_version":"HTTP/1.1","host":"google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"type":"response","response_version":"HTTP/1.1","response_status":301,"response_reason":["Moved Permanently"],"location":"http://www.google.com/","content-type":"text/html; charset=UTF-8","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-w0if96oCu3EX7tRPyppOPg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"date":"Sun, 04 Feb 2024 22:25:09 GMT","expires":"Tue, 05 Mar 2024 22:25:09 GMT","cache-control":["public","max-age=2592000"],"server":["gws"],"content-length":219,"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","date_epoch_utc":1707085509,"expires_epoch_utc":1709677509},{"type":"request","request_method":"HEAD","request_uri":"/","request_version":"HTTP/1.1","host":"www.google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"type":"response","response_version":"HTTP/1.1","response_status":200,"response_reason":["OK"],"content-type":"text/html; charset=ISO-8859-1","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-NZmPRDFJDBUjfIdQ12Z3HA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"p3p":"CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"","date":"Sun, 04 Feb 2024 22:25:09 GMT","server":["gws"],"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","transfer-encoding":["chunked"],"expires":"Sun, 04 Feb 2024 22:25:09 GMT","cache-control":["private"],"set-cookie":["1P_JAR=2024-02-04-22; expires=Tue, 05-Mar-2024 22:25:09 GMT; path=/; domain=.google.com; Secure","AEC=Ae3NU9Nm-_YoxvDgLc8KacFFXJ7YeR8_4xABOi_6TFPHkH3czLzKUMi2_eU; expires=Fri, 02-Aug-2024 22:25:09 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax","NID=511=D1Wo-3cLpM2WxRhuncNJmxkzx96hYr_1QWM5fVPzgPWf03fLZh_MfZEfA0YeSu443m6byeo7l0N9GqFJBxxGMghbMM9p89yQ6ELzgL9N4j31Ejjxj9BxFJ8ccmD794UlzMGAC3PKHTUDUpMRCJ9OOcgiJ8f67JE23iVrWFFkP2w; expires=Mon, 05-Aug-2024 22:25:09 GMT; path=/; domain=.google.com; HttpOnly"],"date_epoch_utc":1707085509,"expires_epoch_utc":1707085509}] +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"location":"http://www.google.com/","content-type":"text/html; charset=UTF-8","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-w0if96oCu3EX7tRPyppOPg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"date":"Sun, 04 Feb 2024 22:25:09 GMT","expires":"Tue, 05 Mar 2024 22:25:09 GMT","cache-control":["public","max-age=2592000"],"server":["gws"],"content-length":219,"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","date_epoch_utc":1707085509,"expires_epoch_utc":1709677509},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"www.google.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":200,"_response_reason":["OK"],"content-type":"text/html; charset=ISO-8859-1","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-NZmPRDFJDBUjfIdQ12Z3HA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"p3p":"CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"","date":"Sun, 04 Feb 2024 22:25:09 GMT","server":["gws"],"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","transfer-encoding":["chunked"],"expires":"Sun, 04 Feb 2024 22:25:09 GMT","cache-control":["private"],"set-cookie":["1P_JAR=2024-02-04-22; expires=Tue, 05-Mar-2024 22:25:09 GMT; path=/; domain=.google.com; Secure","AEC=Ae3NU9Nm-_YoxvDgLc8KacFFXJ7YeR8_4xABOi_6TFPHkH3czLzKUMi2_eU; expires=Fri, 02-Aug-2024 22:25:09 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax","NID=511=D1Wo-3cLpM2WxRhuncNJmxkzx96hYr_1QWM5fVPzgPWf03fLZh_MfZEfA0YeSu443m6byeo7l0N9GqFJBxxGMghbMM9p89yQ6ELzgL9N4j31Ejjxj9BxFJ8ccmD794UlzMGAC3PKHTUDUpMRCJ9OOcgiJ8f67JE23iVrWFFkP2w; expires=Mon, 05-Aug-2024 22:25:09 GMT; path=/; domain=.google.com; HttpOnly"],"date_epoch_utc":1707085509,"expires_epoch_utc":1707085509}] diff --git a/tests/fixtures/generic/curl_head--ILvs-microsoft-com.json b/tests/fixtures/generic/curl_head--ILvs-microsoft-com.json new file mode 100644 index 00000000..2fed1de7 --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-microsoft-com.json @@ -0,0 +1 @@ +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"microsoft.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"date":"Mon, 05 Feb 2024 21:18:34 GMT","server":["Kestrel"],"location":"https://www.microsoft.com/","strict-transport-security":"max-age=31536000","date_epoch_utc":1707167914},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/2","host":"www.microsoft.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/2","_response_status":200,"_response_reason":null,"accept-ranges":["bytes"],"content-length":1020,"content-type":"text/html","etag":"\"6082151bd56ea922e1357f5896a90d0a:1425454794\"","last-modified":"Wed, 04 Mar 2015 07:39:54 GMT","server":["AkamaiNetStorage"],"expires":"Mon, 05 Feb 2024 21:18:34 GMT","cache-control":["max-age=0","no-cache","no-store"],"pragma":["no-cache"],"date":"Mon, 05 Feb 2024 21:18:34 GMT","last-modified_epoch_utc":1425454794,"expires_epoch_utc":1707167914,"date_epoch_utc":1707167914}] diff --git a/tests/fixtures/generic/curl_head--ILvs-microsoft-com.out b/tests/fixtures/generic/curl_head--ILvs-microsoft-com.out new file mode 100644 index 00000000..d5bfb262 --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-microsoft-com.out @@ -0,0 +1,64 @@ +* Trying [2603:1020:201:10::10f]:80... +* Trying 20.231.239.246:80... +* Connected to microsoft.com (2603:1020:201:10::10f) port 80 (#0) +> HEAD / HTTP/1.1 +> Host: microsoft.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/1.1 301 Moved Permanently +< Date: Mon, 05 Feb 2024 21:18:34 GMT +< Server: Kestrel +< Location: https://www.microsoft.com/ +< Strict-Transport-Security: max-age=31536000 +< +* Connection #0 to host microsoft.com left intact +* Clear auth, redirects to port from 80 to 443 +* Issue another request to this URL: 'https://www.microsoft.com/' +* Trying [2600:1406:3c:383::356e]:443... +* Connected to www.microsoft.com (2600:1406:3c:383::356e) port 443 (#1) +* ALPN: offers h2,http/1.1 +* (304) (OUT), TLS handshake, Client hello (1): +* CAfile: /etc/ssl/cert.pem +* CApath: none +* (304) (IN), TLS handshake, Server hello (2): +* (304) (IN), TLS handshake, Unknown (8): +* (304) (IN), TLS handshake, Certificate (11): +* (304) (IN), TLS handshake, CERT verify (15): +* (304) (IN), TLS handshake, Finished (20): +* (304) (OUT), TLS handshake, Finished (20): +* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384 +* ALPN: server accepted h2 +* Server certificate: +* subject: C=US; ST=WA; L=Redmond; O=Microsoft Corporation; CN=www.microsoft.com +* start date: Sep 14 17:24:20 2023 GMT +* expire date: Sep 8 17:24:20 2024 GMT +* subjectAltName: host "www.microsoft.com" matched cert's "www.microsoft.com" +* issuer: C=US; O=Microsoft Corporation; CN=Microsoft Azure RSA TLS Issuing CA 07 +* SSL certificate verify ok. +* using HTTP/2 +* h2 [:method: HEAD] +* h2 [:scheme: https] +* h2 [:authority: www.microsoft.com] +* h2 [:path: /] +* h2 [user-agent: curl/8.1.2] +* h2 [accept: */*] +* Using Stream ID: 1 (easy handle 0x7f7a63009600) +> HEAD / HTTP/2 +> Host: www.microsoft.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/2 200 +< accept-ranges: bytes +< content-length: 1020 +< content-type: text/html +< etag: "6082151bd56ea922e1357f5896a90d0a:1425454794" +< last-modified: Wed, 04 Mar 2015 07:39:54 GMT +< server: AkamaiNetStorage +< expires: Mon, 05 Feb 2024 21:18:34 GMT +< cache-control: max-age=0, no-cache, no-store +< pragma: no-cache +< date: Mon, 05 Feb 2024 21:18:34 GMT +< +* Connection #1 to host www.microsoft.com left intact diff --git a/tests/fixtures/generic/curl_head--ILvs-yahoo-com.json b/tests/fixtures/generic/curl_head--ILvs-yahoo-com.json new file mode 100644 index 00000000..9696a1bc --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-yahoo-com.json @@ -0,0 +1 @@ +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"yahoo.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"date":"Mon, 05 Feb 2024 21:08:54 GMT","connection":["keep-alive"],"server":["ATS"],"cache-control":["no-store","no-cache"],"content-type":"text/html","content-language":["en"],"x-frame-options":"SAMEORIGIN","location":"https://yahoo.com/","content-length":8,"date_epoch_utc":1707167334},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/2","host":"yahoo.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/2","_response_status":301,"_response_reason":null,"date":"Mon, 05 Feb 2024 21:08:54 GMT","strict-transport-security":"max-age=31536000","server":["ATS"],"cache-control":["no-store","no-cache"],"content-type":"text/html","content-language":["en"],"x-frame-options":"SAMEORIGIN","referrer-policy":"no-referrer-when-downgrade","x-content-type-options":"nosniff","x-xss-protection":"1; mode=block","location":"https://www.yahoo.com/","content-length":8,"date_epoch_utc":1707167334},{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/2","host":"www.yahoo.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/2","_response_status":200,"_response_reason":null,"date":"Mon, 05 Feb 2024 21:08:55 GMT","strict-transport-security":"max-age=31536000","server":["ATS"],"cache-control":["no-store","no-cache","max-age=0","private"],"content-type":"text/html","content-language":["en"],"expires":"-1","content-security-policy":["frame-ancestors 'self' https://*.builtbygirls.com https://*.rivals.com https://*.engadget.com https://*.intheknow.com https://*.autoblog.com https://*.techcrunch.com https://*.yahoo.com https://*.aol.com https://*.huffingtonpost.com https://*.oath.com https://*.search.yahoo.com https://*.pnr.ouryahoo.com https://pnr.ouryahoo.com https://*.search.aol.com https://*.search.huffpost.com https://*.onesearch.com https://*.verizonmedia.com https://*.publishing.oath.com https://*.autoblog.com; sandbox allow-forms allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-presentation; report-uri https://csp.yahoo.com/beacon/csp?src=ats&site=frontpage®ion=US&lang=en-US&device=desktop&yrid=289ld91is2jj7&partner=;"],"x-frame-options":"SAMEORIGIN","referrer-policy":"no-referrer-when-downgrade","content-length":12,"age":0,"expect-ct":["max-age=31536000","report-uri=\"http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only\""],"x-xss-protection":"1; mode=block","x-content-type-options":"nosniff","date_epoch_utc":1707167335}] diff --git a/tests/fixtures/generic/curl_head--ILvs-yahoo-com.out b/tests/fixtures/generic/curl_head--ILvs-yahoo-com.out new file mode 100644 index 00000000..85e75577 --- /dev/null +++ b/tests/fixtures/generic/curl_head--ILvs-yahoo-com.out @@ -0,0 +1,121 @@ +* Trying [2001:4998:24:120d::1:0]:80... +* Connected to yahoo.com (2001:4998:24:120d::1:0) port 80 (#0) +> HEAD / HTTP/1.1 +> Host: yahoo.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/1.1 301 Moved Permanently +< Date: Mon, 05 Feb 2024 21:08:54 GMT +< Connection: keep-alive +< Server: ATS +< Cache-Control: no-store, no-cache +< Content-Type: text/html +< Content-Language: en +< X-Frame-Options: SAMEORIGIN +< Location: https://yahoo.com/ +< Content-Length: 8 +< +* Connection #0 to host yahoo.com left intact +* Clear auth, redirects to port from 80 to 443 +* Issue another request to this URL: 'https://yahoo.com/' +* Trying [2001:4998:124:1507::f001]:443... +* Connected to yahoo.com (2001:4998:124:1507::f001) port 443 (#1) +* ALPN: offers h2,http/1.1 +* (304) (OUT), TLS handshake, Client hello (1): +* CAfile: /etc/ssl/cert.pem +* CApath: none +* (304) (IN), TLS handshake, Server hello (2): +* (304) (IN), TLS handshake, Unknown (8): +* (304) (IN), TLS handshake, Certificate (11): +* (304) (IN), TLS handshake, CERT verify (15): +* (304) (IN), TLS handshake, Finished (20): +* (304) (OUT), TLS handshake, Finished (20): +* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 +* ALPN: server accepted h2 +* Server certificate: +* subject: C=US; ST=California; L=Sunnyvale; O=Oath Holdings Inc.; CN=yahoo.com +* start date: Sep 26 00:00:00 2023 GMT +* expire date: Mar 20 23:59:59 2024 GMT +* subjectAltName: host "yahoo.com" matched cert's "yahoo.com" +* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA +* SSL certificate verify ok. +* using HTTP/2 +* h2 [:method: HEAD] +* h2 [:scheme: https] +* h2 [:authority: yahoo.com] +* h2 [:path: /] +* h2 [user-agent: curl/8.1.2] +* h2 [accept: */*] +* Using Stream ID: 1 (easy handle 0x7f851d010600) +> HEAD / HTTP/2 +> Host: yahoo.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/2 301 +< date: Mon, 05 Feb 2024 21:08:54 GMT +< strict-transport-security: max-age=31536000 +< server: ATS +< cache-control: no-store, no-cache +< content-type: text/html +< content-language: en +< x-frame-options: SAMEORIGIN +< referrer-policy: no-referrer-when-downgrade +< x-content-type-options: nosniff +< x-xss-protection: 1; mode=block +< location: https://www.yahoo.com/ +< content-length: 8 +< +* Connection #1 to host yahoo.com left intact +* Issue another request to this URL: 'https://www.yahoo.com/' +* Trying [2001:4998:18:800::4002]:443... +* Connected to www.yahoo.com (2001:4998:18:800::4002) port 443 (#2) +* ALPN: offers h2,http/1.1 +* (304) (OUT), TLS handshake, Client hello (1): +* (304) (IN), TLS handshake, Server hello (2): +* (304) (IN), TLS handshake, Unknown (8): +* (304) (IN), TLS handshake, Certificate (11): +* (304) (IN), TLS handshake, CERT verify (15): +* (304) (IN), TLS handshake, Finished (20): +* (304) (OUT), TLS handshake, Finished (20): +* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 +* ALPN: server accepted h2 +* Server certificate: +* subject: C=US; ST=California; L=Sunnyvale; O=Oath Holdings Inc.; CN=*.api.fantasysports.yahoo.com +* start date: Jan 22 00:00:00 2024 GMT +* expire date: Mar 13 23:59:59 2024 GMT +* subjectAltName: host "www.yahoo.com" matched cert's "*.yahoo.com" +* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA +* SSL certificate verify ok. +* using HTTP/2 +* h2 [:method: HEAD] +* h2 [:scheme: https] +* h2 [:authority: www.yahoo.com] +* h2 [:path: /] +* h2 [user-agent: curl/8.1.2] +* h2 [accept: */*] +* Using Stream ID: 1 (easy handle 0x7f851d010600) +> HEAD / HTTP/2 +> Host: www.yahoo.com +> User-Agent: curl/8.1.2 +> Accept: */* +> +< HTTP/2 200 +< date: Mon, 05 Feb 2024 21:08:55 GMT +< strict-transport-security: max-age=31536000 +< server: ATS +< cache-control: no-store, no-cache, max-age=0, private +< content-type: text/html +< content-language: en +< expires: -1 +< content-security-policy: frame-ancestors 'self' https://*.builtbygirls.com https://*.rivals.com https://*.engadget.com https://*.intheknow.com https://*.autoblog.com https://*.techcrunch.com https://*.yahoo.com https://*.aol.com https://*.huffingtonpost.com https://*.oath.com https://*.search.yahoo.com https://*.pnr.ouryahoo.com https://pnr.ouryahoo.com https://*.search.aol.com https://*.search.huffpost.com https://*.onesearch.com https://*.verizonmedia.com https://*.publishing.oath.com https://*.autoblog.com; sandbox allow-forms allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-presentation; report-uri https://csp.yahoo.com/beacon/csp?src=ats&site=frontpage®ion=US&lang=en-US&device=desktop&yrid=289ld91is2jj7&partner=; +< x-frame-options: SAMEORIGIN +< referrer-policy: no-referrer-when-downgrade +< content-length: 12 +< age: 0 +< expect-ct: max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" +< x-xss-protection: 1; mode=block +< x-content-type-options: nosniff +< +* Connection #2 to host www.yahoo.com left intact diff --git a/tests/fixtures/generic/http_headers--example-com.json b/tests/fixtures/generic/http_headers--example-com.json index 5e01c1a0..d9be8a03 100644 --- a/tests/fixtures/generic/http_headers--example-com.json +++ b/tests/fixtures/generic/http_headers--example-com.json @@ -1 +1 @@ -[{"type":"request","request_method":"HEAD","request_uri":"/","request_version":"HTTP/1.1","host":"example.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"type":"response","response_version":"HTTP/1.1","response_status":200,"response_reason":["OK"],"accept-ranges":["bytes"],"age":140203,"cache-control":["max-age=604800"],"content-type":"text/html; charset=UTF-8","date":"Sun, 04 Feb 2024 02:25:07 GMT","etag":"\"3147526947\"","expires":"Sun, 11 Feb 2024 02:25:07 GMT","last-modified":"Thu, 17 Oct 2019 07:18:26 GMT","server":["ECS (sac/252F)"],"x-cache":"HIT","content-length":1256,"date_epoch_utc":1707013507,"expires_epoch_utc":1707618307,"last-modified_epoch_utc":1571296706}] +[{"_type":"request","_request_method":"HEAD","_request_uri":"/","_request_version":"HTTP/1.1","host":"example.com","user-agent":"curl/8.1.2","accept":["*/*"]},{"_type":"response","_response_version":"HTTP/1.1","_response_status":200,"_response_reason":["OK"],"accept-ranges":["bytes"],"age":140203,"cache-control":["max-age=604800"],"content-type":"text/html; charset=UTF-8","date":"Sun, 04 Feb 2024 02:25:07 GMT","etag":"\"3147526947\"","expires":"Sun, 11 Feb 2024 02:25:07 GMT","last-modified":"Thu, 17 Oct 2019 07:18:26 GMT","server":["ECS (sac/252F)"],"x-cache":"HIT","content-length":1256,"date_epoch_utc":1707013507,"expires_epoch_utc":1707618307,"last-modified_epoch_utc":1571296706}] diff --git a/tests/fixtures/generic/http_headers--google-com.json b/tests/fixtures/generic/http_headers--google-com.json index 3153baec..d9fc3d8b 100644 --- a/tests/fixtures/generic/http_headers--google-com.json +++ b/tests/fixtures/generic/http_headers--google-com.json @@ -1 +1 @@ -[{"type":"response","response_version":"HTTP/1.1","response_status":301,"response_reason":["Moved Permanently"],"location":"http://www.google.com/","content-type":"text/html; charset=UTF-8","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-hz60SAtf4llI3wIzHRfCJQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"date":"Sun, 04 Feb 2024 22:48:38 GMT","expires":"Tue, 05 Mar 2024 22:48:38 GMT","cache-control":["public","max-age=2592000"],"server":["gws"],"content-length":219,"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","date_epoch_utc":1707086918,"expires_epoch_utc":1709678918},{"type":"response","response_version":"HTTP/1.1","response_status":200,"response_reason":["OK"],"content-type":"text/html; charset=ISO-8859-1","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-mX7dt-8o5qVlNVsgmeavew' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"p3p":"CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"","date":"Sun, 04 Feb 2024 22:48:38 GMT","server":["gws"],"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","transfer-encoding":["chunked"],"expires":"Sun, 04 Feb 2024 22:48:38 GMT","cache-control":["private"],"set-cookie":["1P_JAR=2024-02-04-22; expires=Tue, 05-Mar-2024 22:48:38 GMT; path=/; domain=.google.com; Secure","AEC=Ae3NU9OU79owVo5-35hp-3J9oKndh-rfsAa-zY1qEjSYgasatkOvi9Cc_P8; expires=Fri, 02-Aug-2024 22:48:38 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax","NID=511=YT39CFpNgnJnUOS1bI2BM3RWycjJIJ9HfoYYzzj48nu9tym-Ja_uLvmg-vBYyJYoA7_BBrlj4nGil9o0WYbz2tfMwDVzpHXRVZTZx7P9yI-Ad9t8VgRB4wVS5nGEi9xZ20djOLr-bTWoIiJuXgUdKH30znpJXziu542KaHu0ZcQ; expires=Mon, 05-Aug-2024 22:48:38 GMT; path=/; domain=.google.com; HttpOnly"],"date_epoch_utc":1707086918,"expires_epoch_utc":1707086918}] +[{"_type":"response","_response_version":"HTTP/1.1","_response_status":301,"_response_reason":["Moved Permanently"],"location":"http://www.google.com/","content-type":"text/html; charset=UTF-8","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-hz60SAtf4llI3wIzHRfCJQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"date":"Sun, 04 Feb 2024 22:48:38 GMT","expires":"Tue, 05 Mar 2024 22:48:38 GMT","cache-control":["public","max-age=2592000"],"server":["gws"],"content-length":219,"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","date_epoch_utc":1707086918,"expires_epoch_utc":1709678918},{"_type":"response","_response_version":"HTTP/1.1","_response_status":200,"_response_reason":["OK"],"content-type":"text/html; charset=ISO-8859-1","content-security-policy-report-only":["object-src 'none';base-uri 'self';script-src 'nonce-mX7dt-8o5qVlNVsgmeavew' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"],"p3p":"CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"","date":"Sun, 04 Feb 2024 22:48:38 GMT","server":["gws"],"x-xss-protection":"0","x-frame-options":"SAMEORIGIN","transfer-encoding":["chunked"],"expires":"Sun, 04 Feb 2024 22:48:38 GMT","cache-control":["private"],"set-cookie":["1P_JAR=2024-02-04-22; expires=Tue, 05-Mar-2024 22:48:38 GMT; path=/; domain=.google.com; Secure","AEC=Ae3NU9OU79owVo5-35hp-3J9oKndh-rfsAa-zY1qEjSYgasatkOvi9Cc_P8; expires=Fri, 02-Aug-2024 22:48:38 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax","NID=511=YT39CFpNgnJnUOS1bI2BM3RWycjJIJ9HfoYYzzj48nu9tym-Ja_uLvmg-vBYyJYoA7_BBrlj4nGil9o0WYbz2tfMwDVzpHXRVZTZx7P9yI-Ad9t8VgRB4wVS5nGEi9xZ20djOLr-bTWoIiJuXgUdKH30znpJXziu542KaHu0ZcQ; expires=Mon, 05-Aug-2024 22:48:38 GMT; path=/; domain=.google.com; HttpOnly"],"date_epoch_utc":1707086918,"expires_epoch_utc":1707086918}]