{"id":13447899,"url":"https://github.com/avwo/whistle","last_synced_at":"2025-11-12T21:26:15.136Z","repository":{"id":28613319,"uuid":"32131850","full_name":"avwo/whistle","owner":"avwo","description":"HTTP, HTTP2, HTTPS, Websocket debugging proxy","archived":false,"fork":false,"pushed_at":"2025-05-05T15:36:11.000Z","size":90681,"stargazers_count":14787,"open_issues_count":56,"forks_count":1119,"subscribers_count":202,"default_branch":"master","last_synced_at":"2025-05-13T11:07:16.688Z","etag":null,"topics":["charles","debug","fiddler","hosts","node","nodejs","proxy","web","weinre"],"latest_commit_sha":null,"homepage":"https://wproxy.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avwo.png","metadata":{"files":{"readme":"README-en_US.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2015-03-13T05:42:01.000Z","updated_at":"2025-05-13T10:02:12.000Z","dependencies_parsed_at":"2023-10-20T18:09:20.196Z","dependency_job_id":"64684746-6f43-4647-82d8-9ddbdbf2faef","html_url":"https://github.com/avwo/whistle","commit_stats":{"total_commits":11299,"total_committers":53,"mean_commits":"213.18867924528303","dds":"0.013275511107177618","last_synced_commit":"7ce2ee9639b9321c174da7a4dee87464bafc00d7"},"previous_names":[],"tags_count":449,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avwo%2Fwhistle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avwo%2Fwhistle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avwo%2Fwhistle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avwo%2Fwhistle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avwo","download_url":"https://codeload.github.com/avwo/whistle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253929366,"owners_count":21985802,"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":["charles","debug","fiddler","hosts","node","nodejs","proxy","web","weinre"],"created_at":"2024-07-31T05:01:29.802Z","updated_at":"2025-11-12T21:26:15.128Z","avatar_url":"https://github.com/avwo.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","抓包工具","\u003ca id=\"1a9934198e37d6d06b881705b863afc8\"\u003e\u003c/a\u003e通信\u0026\u0026代理\u0026\u0026反向代理\u0026\u0026隧道","常用工具","\u003ca id=\"d03d494700077f6a65092985c06bf8e8\"\u003e\u003c/a\u003e工具","Uncategorized","语言资源库","功能测试","web","⚙️ Backend \u0026 APIs"],"sub_categories":["\u003ca id=\"21cbd08576a3ead42f60963cdbfb8599\"\u003e\u003c/a\u003e代理","\u003ca id=\"b6f25145e99ea944cbb528a24afaa0be\"\u003e\u003c/a\u003eHTTP\u0026\u0026HTTPS","Uncategorized","JavaScript","抓包工具"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://avwo.github.io/whistle/\"\u003e\n    \u003cimg alt=\"whistle logo\" src=\"https://user-images.githubusercontent.com/11450939/168828068-99e38862-d5fc-42bc-b5ab-6262b2ca27d6.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# whistle\n[![NPM version](https://img.shields.io/npm/v/whistle.svg?style=flat-square)](https://npmjs.org/package/whistle)\n[![node version](https://img.shields.io/badge/node.js-%3E=_8-green.svg?style=flat-square)](http://nodejs.org/download/)\n[![npm download](https://img.shields.io/npm/dm/whistle.svg?style=flat-square)](https://npmjs.org/package/whistle)\n[![NPM count](https://img.shields.io/npm/dt/whistle.svg?style=flat-square)](https://www.npmjs.com/package/whistle)\n[![License](https://img.shields.io/github/license/avwo/whistle?style=flat-square)](https://www.npmjs.com/package/whistle)\n\n[中文](./README.md) · English\n\nWhistle is a cross-platform network packet capture and debugging tool based on Node.js, with:\n1. **Powerful**\n   - Supports multiple proxy modes such as HTTP proxy, HTTPS proxy, Socks proxy, and reverse proxy\n   - Supports viewing and modifying HTTP, HTTPS, HTTP/2, WebSocket, and TCP requests/responses\n   - Built-in multiple common debugging tools:\n     - Weinre: View the DOM structure of the remote page,\n     - Console: View the console log of the remote page,\n     - Composer: Replay and edit requests\n2. **Simple operation**\n   - Supports modifying requests/responses by configuring rules\n   - Provides a one-stop GUI interface for viewing packet capture, configuring rules, managing plug-ins, and operating Weinre/Console/Composer, etc.\n3. **Extensible**\n   - Supports extending rules and interface functions through plug-ins\n   - Supports being referenced by projects as NPM packages\n4. **Cross-platform**\n   - Supports desktop systems such as macOS, Windows, and Linux (Ubuntu/Fedora)\n   - Supports interfaceless Linux servers\n\n# Installation\n\n**Whistle client is recommended for desktop systems such as macOS, Windows, and Linux (Ubuntu/Fedora): [https://github.com/avwo/whistle-client](https://github.com/avwo/whistle-client)**\n\n\u003e You can skip the **installation** step by using Whistle client\n\nFor environments such as Linux servers without interfaces, please follow the 4 steps below:\n\n1. **Install Whistle**, it is recommended to install it with NPM: `npm i -g whistle` (Node.js needs to be installed first: https://nodejs.org/)\n    \u003e It also supports installation through brew: `brew install whistle` (brew needs to be installed first: https://brew.sh/)\n2. **Start Whistle**, execute the command line: `w2 start`\n3. **Install the root certificate**, execute the command line: `w2 ca`\n    \u003e The root certificate installation process may require manual confirmation:\n    \u003e\n    \u003e \u003cdetails\u003e\n    \u003e \u003csummary\u003eWindows needs to click the last \"Yes (Y)\" confirm\u003c/summary\u003e\n    \u003e \u003cimg alt=\"Click Yes (Y)\" width=\"420\" src=\"https://user-images.githubusercontent.com/11450939/168846905-384e0540-e02f-46de-81d7-e395a496f032.jpeg\"\u003e\n    \u003e \u003c/details\u003e\n    \u003e\n    \u003e \u003cdetails\u003e\n    \u003e \u003csummary\u003emacOS requires a power-on password or fingerprint verification\u003c/summary\u003e\n    \u003e \u003cimg alt=\"Enter power-on password\" width=\"330\" src=\"https://user-images.githubusercontent.com/11450939/176977027-4a7b06a0-64f6-4580-b983-312515e9cd4e.png\"\u003e\n    \u003e \u003cimg alt=\"Enter fingerprint\" width=\"330\" src=\"https://user-images.githubusercontent.com/11450939/168847123-e66845d0-6002-4f24-874f-b6943f7f376b.png\"\u003e\n    \u003e \u003c/details\u003e\n    \u003e\n\n4. **Set proxy**, command line execution: `w2 proxy`\n    \u003e macOS may need to enter the lock screen password when setting up the proxy for the first time\n    \u003e\n    \u003e Set a specified IP or port: `w2 proxy \"10.x.x.x:8888\"`\n    \u003e\n    \u003e Turn off system proxy: `w2 proxy 0`\n    \u003e\n    \u003e Other ways to set proxy:\n    \u003e\n    \u003e 1. **[Recommended]** Install Chrome plug-in ZeroOmega Set up a proxy: https://chromewebstore.google.com/detail/proxy-switchyomega-3-zero/pfnededegaaopdmhkdmcofjmoldfiped (If you cannot access it, you can install it manually: https://chrome.zzzmh.cn/info/pfnededegaaopdmhkdmcofjmoldfiped)\n    \u003e\n    \u003e 2. Set up a proxy directly on the client, such as FireFox, WeChat developer tools, etc., which have built-in proxy settings\n    \u003e\n    \u003e \u003cdetails\u003e\n    \u003e \u003csummary\u003eFireFox proxy settings example image\u003c/summary\u003e\n    \u003e \u003cimg width=\"1000\" alt=\"image\" src=\"https://github.com/user-attachments/assets/98c1ec5d-4955-4e23-a49a-c1015b128d9d\" /\u003e\n    \u003e \u003c/details\u003e\n    \u003e\n    \u003e 3. Through Proxifier Setting up a proxy (for clients that cannot set up a proxy and do not use a system proxy): https://www.proxifier.com/docs/win-v4/http-proxy.html\n    \u003e\n\n# Getting Started\nFor detailed usage instructions, please refer to: https://wproxy.org/en/docs/getting-started.html\n\n# License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favwo%2Fwhistle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favwo%2Fwhistle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favwo%2Fwhistle/lists"}