56,966 blogs · [ { "id": "01a0d89e-d0c8-7242-90f0-9763fc14c604", "title": "Android 17 enables certificate transparency, and breaks custom CAs", "url": "https://httptoolkit.com/blog/android-17-certificate-transparency/", "published_at": "2026-09-23T08:00:00+00:00" }, { "id": "01a0b652-8cba-71c4-8885-f919ec2d3c14", "title": "Dictionary Compression is finally here, and it's ridiculously good", "url": "https://httptoolkit.com/blog/dictionary-compression-performance-zstd-brotli/", "published_at": "2026-02-23T13:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6036689b67", "title": "Funding the OSS Stack: HTTP Toolkit & Open Source in 2025", "url": "https://httptoolkit.com/blog/open-source-funding-in-2025/", "published_at": "2026-02-21T18:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60375dd4ac", "title": "HTTP/3 is everywhere but nowhere", "url": "https://httptoolkit.com/blog/http3-quic-open-source-support-nowhere/", "published_at": "2025-03-12T16:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6037a56b18", "title": "HTTP Toolkit is joining the Open Source Pledge", "url": "https://httptoolkit.com/blog/open-source-funding-pledge/", "published_at": "2024-12-31T15:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6038467d3e", "title": "ERR_PROXY_CONNECTION_FAILED errors with HTTP proxies", "url": "https://httptoolkit.com/blog/proxy_connection_failed/", "published_at": "2024-12-11T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603904657a", "title": "Designing API Errors", "url": "https://httptoolkit.com/blog/designing-api-errors/", "published_at": "2024-09-09T15:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6039d027a4", "title": "22 years later, YAML now has a media type", "url": "https://httptoolkit.com/blog/yaml-media-type-rfc/", "published_at": "2024-02-20T15:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603aa5a35e", "title": "What is X-Forwarded-For and when can you trust it?", "url": "https://httptoolkit.com/blog/what-is-x-forwarded-for/", "published_at": "2024-01-31T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603ad12ab4", "title": "Working with the new Idempotency Keys RFC", "url": "https://httptoolkit.com/blog/idempotency-keys/", "published_at": "2023-12-12T15:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603b27d156", "title": "A brief introduction to OpenAPI", "url": "https://httptoolkit.com/blog/introduction-to-openapi/", "published_at": "2023-11-28T09:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603bc4ed81", "title": "6 ways to debug an exploding Docker container", "url": "https://httptoolkit.com/blog/debug-failing-docker-container/", "published_at": "2023-10-31T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603c597ce6", "title": "New ways to inject system CA certificates in Android 14", "url": "https://httptoolkit.com/blog/android-14-install-system-ca-certificate/", "published_at": "2023-09-21T12:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603d3ff272", "title": "Android 14 blocks modification of system certificates, even as root", "url": "https://httptoolkit.com/blog/android-14-breaks-system-certificate-installation/", "published_at": "2023-09-05T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603d9f2067", "title": "Apple already shipped attestation on the web, and we barely noticed", "url": "https://httptoolkit.com/blog/apple-private-access-tokens-attestation/", "published_at": "2023-07-25T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603de3b67e", "title": "Leaking secrets through caching with Bunny CDN", "url": "https://httptoolkit.com/blog/bunny-cdn-caching-vulnerability/", "published_at": "2023-06-20T11:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603e679702", "title": "Automatic npm publishing, with GitHub Actions & npm granular tokens", "url": "https://httptoolkit.com/blog/automatic-npm-publish-gha/", "published_at": "2023-03-22T10:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603e9a48e4", "title": "Dodge the next Dockerpocalypse: how to own your own Docker Registry address", "url": "https://httptoolkit.com/blog/docker-image-registry-facade/", "published_at": "2023-03-17T11:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603f45936f", "title": "EU Funding for Mobile App Traffic Interception", "url": "https://httptoolkit.com/blog/frida-mobile-interception-funding/", "published_at": "2023-02-27T12:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603f62807f", "title": "Debugging WebRTC, IPFS & Ethereum with HTTP Toolkit", "url": "https://httptoolkit.com/blog/decentralized-web-webrtc-debugging/", "published_at": "2022-10-28T13:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe603f911558", "title": "Testing libraries for the Decentralized Web", "url": "https://httptoolkit.com/blog/decentralized-web-testing-libraries/", "published_at": "2022-10-24T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604027d3e0", "title": "How to intercept, observe & mock WebRTC traffic", "url": "https://httptoolkit.com/blog/intercepting-webrtc-traffic/", "published_at": "2022-10-13T10:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6040e70366", "title": "Android Chrome 99 expands Certificate Transparency, breaking all MitM dev tools", "url": "https://httptoolkit.com/blog/chrome-android-certificate-transparency/", "published_at": "2022-05-11T16:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6041b452d8", "title": "Fighting TLS fingerprinting with Node.js", "url": "https://httptoolkit.com/blog/tls-fingerprinting-node-js/", "published_at": "2021-12-07T13:40:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6042ad32e1", "title": "Reverse engineering & modifying Android apps with JADX & Frida", "url": "https://httptoolkit.com/blog/android-reverse-engineering/", "published_at": "2021-11-22T12:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6043294441", "title": "New HTTP standards for caching on the modern web", "url": "https://httptoolkit.com/blog/status-targeted-caching-headers/", "published_at": "2021-10-20T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6043ea2645", "title": "EU Funding for Dev Tools for the Decentralized Web", "url": "https://httptoolkit.com/blog/developer-tools-decentralized-web/", "published_at": "2021-09-15T12:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604463f008", "title": "Proxies are complicated: RCE vulnerability in a 3 million downloads/week NPM package", "url": "https://httptoolkit.com/blog/npm-pac-proxy-agent-vulnerability/", "published_at": "2021-08-31T11:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60450e0c71", "title": "HTTPS certificate non-validation vulnerability in Node.js", "url": "https://httptoolkit.com/blog/node-https-vulnerability/", "published_at": "2021-08-11T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604545c246", "title": "Safari isn't protecting the web, it's killing it", "url": "https://httptoolkit.com/blog/safari-is-killing-the-web/", "published_at": "2021-07-28T15:50:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6045cbf148", "title": "Public CDNs Are Useless and Dangerous", "url": "https://httptoolkit.com/blog/public-cdn-risks/", "published_at": "2021-07-19T14:15:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6046455c7e", "title": "Defeating Android Certificate Pinning with Frida", "url": "https://httptoolkit.com/blog/frida-certificate-pinning/", "published_at": "2021-07-06T13:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6046bc09bd", "title": "Encoding your HTTP for fun and profit", "url": "https://httptoolkit.com/blog/http-encodings/", "published_at": "2021-06-10T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60478aa8fc", "title": "Build an HTTPS-intercepting JavaScript proxy in 30 seconds flat", "url": "https://httptoolkit.com/blog/javascript-mitm-proxy-mockttp/", "published_at": "2021-04-27T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6047f7c485", "title": "One Port to Rule Them All", "url": "https://httptoolkit.com/blog/http-https-same-port/", "published_at": "2021-04-15T16:45:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60489d5367", "title": "Defining a new HTTP method: HTTP QUERY", "url": "https://httptoolkit.com/blog/http-search-method/", "published_at": "2021-04-12T15:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6049180004", "title": "What are CORS proxies, and when are they safe?", "url": "https://httptoolkit.com/blog/cors-proxies/", "published_at": "2021-04-01T09:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6049b7b98b", "title": "Intercept and edit HTTP traffic from (almost) any Android app", "url": "https://httptoolkit.com/blog/inspect-any-android-apps-http/", "published_at": "2021-03-24T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604a4afed2", "title": "How to intercept & debug all Java HTTPS", "url": "https://httptoolkit.com/blog/how-to-intercept-debug-java-http/", "published_at": "2021-03-17T18:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604aedd503", "title": "HTTPWTF", "url": "https://httptoolkit.com/blog/http-wtf/", "published_at": "2021-03-04T15:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604bdbb750", "title": "Cache your CORS, for performance & profit", "url": "https://httptoolkit.com/blog/cache-your-cors/", "published_at": "2021-02-17T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604c078de7", "title": "Fixing DNS in Node.js", "url": "https://httptoolkit.com/blog/configuring-nodejs-dns/", "published_at": "2021-02-17T16:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604cf27fb8", "title": "How to Index 226,379 API Endpoints", "url": "https://httptoolkit.com/blog/how-to-index-200000-apis/", "published_at": "2021-02-11T13:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604dcb6b58", "title": "The right way to turn off your old APIs", "url": "https://httptoolkit.com/blog/how-to-turn-off-your-old-apis/", "published_at": "2021-01-21T10:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604e7b6055", "title": "Mining your CLI history for good git aliases", "url": "https://httptoolkit.com/blog/find-best-git-aliases/", "published_at": "2020-11-30T13:35:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604f02ba74", "title": "How do you know what's gone wrong when your API request fails?", "url": "https://httptoolkit.com/blog/http-api-problem-details/", "published_at": "2020-11-24T13:35:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe604f9d97b2", "title": "Intercepting HTTPS on Android", "url": "https://httptoolkit.com/blog/intercepting-android-https/", "published_at": "2020-11-05T16:45:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60505372db", "title": "Migrating a JS project from Travis to GitHub Actions", "url": "https://httptoolkit.com/blog/migrating-javascript-from-travis-to-github-actions/", "published_at": "2020-10-27T11:45:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6050e1bd33", "title": "How to Debug Any CORS Error", "url": "https://httptoolkit.com/blog/how-to-debug-cors-errors/", "published_at": "2020-10-07T14:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6051208dee", "title": "Android 11 tightens restrictions on CA certificates", "url": "https://httptoolkit.com/blog/android-11-trust-ca-certificates/", "published_at": "2020-09-10T16:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6051ec2cc4", "title": "GraphQL the Simple Way, or: Don't Use Apollo", "url": "https://httptoolkit.com/blog/simple-graphql-server-without-apollo/", "published_at": "2020-09-02T12:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6052825965", "title": "Inspecting Android HTTP with a fake VPN", "url": "https://httptoolkit.com/blog/inspecting-android-http/", "published_at": "2020-08-25T12:20:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605381a03c", "title": "How to Debug Node.js Segmentation Faults", "url": "https://httptoolkit.com/blog/how-to-debug-node-segfaults/", "published_at": "2020-08-12T11:20:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6054111157", "title": "Translating between HTTP/1 and HTTP/2", "url": "https://httptoolkit.com/blog/translating-http-2-into-http-1/", "published_at": "2020-07-15T14:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6054b75717", "title": "What's coming in TypeScript 4?", "url": "https://httptoolkit.com/blog/whats-coming-in-typescript-4/", "published_at": "2020-06-22T16:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6054e16b12", "title": "Bye bye Feature-Policy, hello Permissions-Policy", "url": "https://httptoolkit.com/blog/renaming-feature-policy-to-permissions-policy/", "published_at": "2020-05-27T13:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6055002544", "title": "How will user-agent client hints work?", "url": "https://httptoolkit.com/blog/user-agent-client-hints/", "published_at": "2020-05-06T17:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6055ea2f43", "title": "Ignore HTTP Client Errors At Your Peril", "url": "https://httptoolkit.com/blog/how-and-why-to-monitor-http-client-errors/", "published_at": "2020-04-16T17:45:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60569c3997", "title": "HTTP 555: User-Defined Resource Error", "url": "https://httptoolkit.com/blog/new-http-status-code-555/", "published_at": "2020-03-27T13:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6056d8d5db", "title": "Chrome 79+ no longer shows preflight CORS requests", "url": "https://httptoolkit.com/blog/chrome-79-doesnt-show-cors-preflight/", "published_at": "2020-02-13T16:25:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605748b093", "title": "Global developer CAs considered harmful", "url": "https://httptoolkit.com/blog/debugging-https-without-global-root-ca-certs/", "published_at": "2020-01-14T13:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6057fa17d3", "title": "Free as in Beer", "url": "https://httptoolkit.com/blog/free-as-in-beer/", "published_at": "2020-01-06T18:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe60588d5d40", "title": "How to Debug Anything", "url": "https://httptoolkit.com/blog/how-to-debug-anything/", "published_at": "2019-12-02T15:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605962f9e7", "title": "A Crash Course in Price Localization", "url": "https://httptoolkit.com/blog/international-product-pricing/", "published_at": "2019-10-28T14:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe6059787793", "title": "The 5 Big Features of TypeScript 3.7 and How to Use Them", "url": "https://httptoolkit.com/blog/5-big-features-of-typescript-3.7/", "published_at": "2019-09-12T12:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605a0c9a6c", "title": "Unblocking Node With Unref()", "url": "https://httptoolkit.com/blog/unblocking-node-with-unref/", "published_at": "2019-09-11T13:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605a4520fa", "title": "Notarize your Electron App with Electron Forge", "url": "https://httptoolkit.com/blog/notarizing-electron-apps-with-electron-forge/", "published_at": "2019-08-06T13:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605b0090ea", "title": "X-Ray Debugging for HTTP", "url": "https://httptoolkit.com/blog/xray-debugging-for-http/", "published_at": "2019-04-24T12:00:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605b63461b", "title": "Bundling Remote Scripts with Webpack", "url": "https://httptoolkit.com/blog/bundling-remote-scripts-with-webpack/", "published_at": "2019-02-07T16:45:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605c42ec91", "title": "Debugging Netlify Function Errors with Sentry", "url": "https://httptoolkit.com/blog/netlify-function-error-reporting-with-sentry/", "published_at": "2019-01-31T19:30:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605d29d11a", "title": "One-click HTTP debugging for any CLI tool", "url": "https://httptoolkit.com/blog/announcing-terminal-interception/", "published_at": "2019-01-22T14:50:00+00:00" }, { "id": "01a0b652-8cbb-7026-8e3c-fe605d3baf56", "title": "Welcome to the HTTP Toolkit blog", "url": "https://httptoolkit.com/blog/new-blog/", "published_at": "2019-01-17T19:08:00+00:00" } ] posts Claim your blog
Back to httptoolkit.com
Blog · corpus.blog/blogs/httptoolkit.com/posts

httptoolkit.com

httptoolkit.com

2026

2025

2024

2023

2022

2021

2020

2019