{"id":15447451,"url":"https://github.com/datadavev/htrace","last_synced_at":"2026-02-13T08:10:28.393Z","repository":{"id":53673162,"uuid":"349097117","full_name":"datadavev/htrace","owner":"datadavev","description":"Tracing HTTP requests over redirects, link headers","archived":false,"fork":false,"pushed_at":"2023-07-19T12:12:38.000Z","size":62,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T02:21:45.810Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datadavev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-18T14:07:17.000Z","updated_at":"2021-11-15T18:13:20.000Z","dependencies_parsed_at":"2024-12-07T14:42:05.002Z","dependency_job_id":"b2736793-76b1-4594-a0ed-fc217fafe14c","html_url":"https://github.com/datadavev/htrace","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":0.07999999999999996,"last_synced_commit":"db8cd3bc423ec3b97cffaea85093f92e83b2cdfb"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadavev%2Fhtrace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadavev%2Fhtrace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadavev%2Fhtrace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadavev%2Fhtrace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datadavev","download_url":"https://codeload.github.com/datadavev/htrace/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137839,"owners_count":21053770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T20:05:56.917Z","updated_at":"2026-02-13T08:10:28.349Z","avatar_url":"https://github.com/datadavev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# htrace\n\nSimple command line utility for tracing HTTP requests over redirects.\n\n```\nUsage: htrace [OPTIONS] URL\n\nOptions:\n  -a, --accept TEXT        Accept header value\n  -b, --body               Show response body\n  -C, --colors             Console colors\n  -j, --json               Report in JSON\n  -k, --insecure           Don't verify certificates\n  -L, --link-type TEXT     Follow link header with type\n  -m, --minimal            Minimal redirect info\n  -P, --link-profile TEXT  Follow link header with profile\n  -R, --link-rel TEXT      Follow link header with rel\n  -T, --timeout INTEGER    Request timeout in seconds\n  -U, --user-agent TEXT    User agent header value\n  --log_time               Show timestamp in output\n  --help                   Show this message and exit.\n  --version                Show the version and exit.\n```\n\nExample:\n```\n% htrace \"http://schema.org/\"\n2021-03-19 08:18:09.371:\u003e GET: http://schema.org/\n2021-03-19 08:18:09.371:\u003e Accept: */*\n2021-03-19 08:18:09.371:\u003c 301 http://schema.org/\n2021-03-19 08:18:09.371:\u003c Content-Length: 0\n2021-03-19 08:18:09.371:\u003c Content-Type: text/html\n2021-03-19 08:18:09.371:\u003c Date: Fri, 19 Mar 2021 12:18:09 GMT\n2021-03-19 08:18:09.371:\u003c Location: https://schema.org/\n2021-03-19 08:18:09.371:\u003c Server: Google Frontend\n2021-03-19 08:18:09.371:\u003c X-Cloud-Trace-Context: dc661d58e457af35212814c8e90163f8\n2021-03-19 08:18:09.371:\u003c 0.0603 sec\n2021-03-19 08:18:09.426:\u003e GET: https://schema.org/\n2021-03-19 08:18:09.426:\u003e Accept: */*\n2021-03-19 08:18:09.426:\u003c 200 https://schema.org/\n2021-03-19 08:18:09.426:\u003c Access-Control-Allow-Credentials: true\n2021-03-19 08:18:09.426:\u003c Access-Control-Allow-Headers: Accept\n2021-03-19 08:18:09.426:\u003c Access-Control-Allow-Methods: GET\n2021-03-19 08:18:09.426:\u003c Access-Control-Allow-Origin: *\n2021-03-19 08:18:09.426:\u003c Access-Control-Expose-Headers: Link\n2021-03-19 08:18:09.426:\u003c Age: 413\n2021-03-19 08:18:09.426:\u003c Alt-Svc: h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"\n2021-03-19 08:18:09.426:\u003c Cache-Control: public, max-age=600\n2021-03-19 08:18:09.426:\u003c Content-Encoding: gzip\n2021-03-19 08:18:09.426:\u003c Content-Length: 2206\n2021-03-19 08:18:09.426:\u003c Content-Type: text/html\n2021-03-19 08:18:09.426:\u003c Date: Fri, 19 Mar 2021 12:11:16 GMT\n2021-03-19 08:18:09.426:\u003c ETag: \"z2afww\"\n2021-03-19 08:18:09.427:\u003c Expires: Fri, 19 Mar 2021 12:21:16 GMT\n2021-03-19 08:18:09.427:\u003c Link: \u003c/docs/jsonldcontext.jsonld\u003e; rel=\"alternate\"; type=\"application/ld+json\"\n2021-03-19 08:18:09.427:\u003c Server: Google Frontend\n2021-03-19 08:18:09.427:\u003c X-Cloud-Trace-Context: 63d878a82afe363fca6c584963eb764b\n2021-03-19 08:18:09.427:\u003c 0.0524 sec\n2021-03-19 08:18:09.457:SUMMARY: Start URL: http://schema.org/\n2021-03-19 08:18:09.457:SUMMARY: Final URL: https://schema.org/\n2021-03-19 08:18:09.457:SUMMARY: Start: 2021-03-19T12:18:09+0000\n2021-03-19 08:18:09.457:SUMMARY: Num requests: 2\n2021-03-19 08:18:09.457:SUMMARY: Elapsed: 0.113 seconds\n```\n\nExample following link header:\n```\n% htrace \"http://schema.org/\" -L \"application/ld+json\" -b | more\n2021-03-19 10:08:01.826:\u003e GET: http://schema.org/\n2021-03-19 10:08:01.826:\u003e Accept: */*\n2021-03-19 10:08:01.826:\u003c 301 http://schema.org/\n2021-03-19 10:08:01.826:\u003c Content-Length: 0\n2021-03-19 10:08:01.827:\u003c Content-Type: text/html\n2021-03-19 10:08:01.827:\u003c Date: Fri, 19 Mar 2021 14:08:01 GMT\n2021-03-19 10:08:01.827:\u003c Location: https://schema.org/\n2021-03-19 10:08:01.827:\u003c Server: Google Frontend\n2021-03-19 10:08:01.827:\u003c X-Cloud-Trace-Context: fe909d0f5514086d3931cb6d1a64f764\n2021-03-19 10:08:01.827:\u003c 0.0623 sec\n2021-03-19 10:08:01.892:\u003e GET: https://schema.org/\n2021-03-19 10:08:01.892:\u003e Accept: */*\n2021-03-19 10:08:01.892:\u003c 200 https://schema.org/\n2021-03-19 10:08:01.892:\u003c Access-Control-Allow-Credentials: true\n2021-03-19 10:08:01.892:\u003c Access-Control-Allow-Headers: Accept\n2021-03-19 10:08:01.892:\u003c Access-Control-Allow-Methods: GET\n2021-03-19 10:08:01.892:\u003c Access-Control-Allow-Origin: *\n2021-03-19 10:08:01.893:\u003c Access-Control-Expose-Headers: Link\n2021-03-19 10:08:01.893:\u003c Age: 229\n2021-03-19 10:08:01.893:\u003c Alt-Svc: h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"\n2021-03-19 10:08:01.893:\u003c Cache-Control: public, max-age=600\n2021-03-19 10:08:01.893:\u003c Content-Encoding: gzip\n2021-03-19 10:08:01.893:\u003c Content-Length: 2206\n2021-03-19 10:08:01.893:\u003c Content-Type: text/html\n2021-03-19 10:08:01.893:\u003c Date: Fri, 19 Mar 2021 14:04:12 GMT\n2021-03-19 10:08:01.893:\u003c ETag: \"z2afww\"\n2021-03-19 10:08:01.893:\u003c Expires: Fri, 19 Mar 2021 14:14:12 GMT\n2021-03-19 10:08:01.893:\u003c Link: \u003c/docs/jsonldcontext.jsonld\u003e; rel=\"alternate\"; type=\"application/ld+json\"\n2021-03-19 10:08:01.893:\u003c Server: Google Frontend\n2021-03-19 10:08:01.893:\u003c X-Cloud-Trace-Context: 72fe99328f0f0e7869ce616b1efc6e64;o=3\n2021-03-19 10:08:01.893:\u003c 0.0619 sec\n2021-03-19 10:08:01.894:L Follow Link: https://schema.org/docs/jsonldcontext.jsonld\n2021-03-19 10:08:01.914:\u003e GET: https://schema.org/docs/jsonldcontext.jsonld\n2021-03-19 10:08:01.914:\u003e Accept: */*\n2021-03-19 10:08:01.914:\u003c 200 https://schema.org/docs/jsonldcontext.jsonld\n2021-03-19 10:08:01.915:\u003c Access-Control-Allow-Credentials: true\n2021-03-19 10:08:01.915:\u003c Access-Control-Allow-Headers: Accept\n2021-03-19 10:08:01.915:\u003c Access-Control-Allow-Methods: GET\n2021-03-19 10:08:01.915:\u003c Access-Control-Allow-Origin: *\n2021-03-19 10:08:01.915:\u003c Age: 450\n2021-03-19 10:08:01.915:\u003c Alt-Svc: h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"\n2021-03-19 10:08:01.915:\u003c Cache-Control: public, max-age=600\n2021-03-19 10:08:01.915:\u003c Content-Length: 163023\n2021-03-19 10:08:01.915:\u003c Content-Type: application/ld+json\n2021-03-19 10:08:01.915:\u003c Date: Fri, 19 Mar 2021 14:00:31 GMT\n2021-03-19 10:08:01.915:\u003c ETag: \"z2afww\"\n2021-03-19 10:08:01.915:\u003c Expires: Fri, 19 Mar 2021 14:10:31 GMT\n2021-03-19 10:08:01.915:\u003c Server: Google Frontend\n2021-03-19 10:08:01.915:\u003c X-Cloud-Trace-Context: eceac0df35d0f09e46ebe05068460ef7;o=1\n2021-03-19 10:08:01.915:\u003c 0.0154 sec\n2021-03-19 10:08:01.915:L Match linked type application/ld+json\n2021-03-19 10:08:01.986:SUMMARY: Start URL: http://schema.org/\n2021-03-19 10:08:01.986:SUMMARY: Final URL: https://schema.org/docs/jsonldcontext.jsonld\n2021-03-19 10:08:01.986:SUMMARY: Start: 2021-03-19T14:08:01+0000\n2021-03-19 10:08:01.986:SUMMARY: Num requests: 3\n2021-03-19 10:08:01.986:SUMMARY: Elapsed: 0.140 seconds\n{\n  \"@context\": {\n        \"type\": \"@type\",\n        \"id\": \"@id\",\n        \"HTML\": { \"@id\": \"rdf:HTML\" },\n\n        \"@vocab\": \"http://schema.org/\",\n        \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n        \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n        \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n        \"schema\": \"http://schema.org/\",\n        \"owl\": \"http://www.w3.org/2002/07/owl#\",\n        \"dc\": \"http://purl.org/dc/elements/1.1/\",\n        \"dct\": \"http://purl.org/dc/terms/\",\n        \"dctype\": \"http://purl.org/dc/dcmitype/\",\n        \"void\": \"http://rdfs.org/ns/void#\",\n        \"dcat\": \"http://www.w3.org/ns/dcat#\",\n        \"3DModel\": {\"@id\": \"schema:3DModel\"},\n...\n```\n\n## Integrations\n\nA configuration for use with [espanso](https://espanso.org/):\n\n```\n  - trigger: \":htrace\"\n    replace: \"{{the_trace}}\"\n    vars:\n    - name: \"form1\"\n      type: form\n      params:\n        layout: \"URL:[[url]]\\n[[accepts]]\"\n        fields:\n          url:\n            multiline: false\n          accepts:\n            type: choice\n            values:\n              - \"*/*\"\n              - \"text/html\"\n              - \"application/ld+json\"\n              - \"application/json\"\n            default: \"*/*\"\n    - name: the_trace\n      type: shell\n      params:\n        cmd: \"htrace -m '{{form1.url}}' 2\u003e\u00261\"\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatadavev%2Fhtrace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatadavev%2Fhtrace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatadavev%2Fhtrace/lists"}