[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6470":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":28,"discoverSource":29},6470,"ios-webkit-debug-proxy","google\u002Fios-webkit-debug-proxy","google","A DevTools proxy (Chrome Remote Debugging Protocol) for iOS devices (Safari Remote Web Inspector).","",null,"C",6172,479,159,14,0,7,17,2,69.24,"BSD 3-Clause \"New\" or \"Revised\" License",false,"master",[],"2026-06-12 04:00:28","# iOS WebKit Debug Proxy\n\nThe ios_webkit_debug_proxy (aka _iwdp_) proxies requests from usbmuxd daemon over a websocket connection, allowing developers to send commands to MobileSafari and UIWebViews on real and simulated iOS devices.\n\n## Installation\n\niOS WebKit Debug Proxy works on Linux, MacOS & Windows.\n\n### MacOS\n\nIt's easiest to install with [homebrew](http:\u002F\u002Fbrew.sh\u002F):\n\n```console\nbrew install ios-webkit-debug-proxy\n```\n### Windows\nIt's easiest to install with [scoop](http:\u002F\u002Fscoop.sh\u002F):\n```\nscoop bucket add extras\nscoop install ios-webkit-debug-proxy\n```\nNote: you also need the latest version of [iTunes](https:\u002F\u002Fwww.apple.com\u002Fil\u002Fitunes\u002Fdownload\u002F) installed.\n\n### Linux\n\nInstall dependencies available in apt repository:\n```console\nsudo apt-get install autoconf automake libusb-dev libusb-1.0-0-dev libplist-dev libtool libssl-dev\n```\n\nBuild and install dependencies that require more recent versions:\n- [libplist](https:\u002F\u002Fgithub.com\u002Flibimobiledevice\u002Flibplist)\n- [libimobiledevice-glue](https:\u002F\u002Fgithub.com\u002Flibimobiledevice\u002Flibimobiledevice-glue)\n- [libusbmuxd](https:\u002F\u002Fgithub.com\u002Flibimobiledevice\u002Flibusbmuxd)\n- [libimobiledevice](https:\u002F\u002Fgithub.com\u002Flibimobiledevice\u002Flibimobiledevice)\n- [usbmuxd](https:\u002F\u002Fgithub.com\u002Flibimobiledevice\u002Fusbmuxd)\n\n#### Fedora specific  \n\nInstall dependencies:  \n```console\nsudo dnf install autoconf automake libusb1-devel libusb-compat-0.1-devel libtool openssl-devel\n```\nIf you do not want to build and install the most recent versions of the noted libs:  \n```console\nsudo dnf install libplist-devel usbmuxd libimobiledevice-devel libimobiledevice-utils libimobiledevice-glue-devel\n```  \n\nBuild and install `ios-webkit-debug-proxy`:\n```console\ngit clone https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fios-webkit-debug-proxy.git\ncd ios-webkit-debug-proxy\n\n.\u002Fautogen.sh\nmake\nsudo make install\n```\n\n## Usage\n\nOn Linux, you must run the `usbmuxd` daemon.  The above install adds a \u002Flib\u002Fudev rule to start the daemon whenever a device is attached.\n\nTo verify that usbmuxd can list your attached device(s), ensure that `libimobiledevice-utils` is installed and then run `idevice_id -l`.\n\n### Start the simulator or device\n\nThe iOS Simulator is supported, but it must be started **before** the proxy.  The simulator can be started in XCode,  standalone, or via the command line:\n\n```sh\n# Xcode changes these paths frequently, so doublecheck them\nSDK_DIR=\"\u002FApplications\u002FXcode.app\u002FContents\u002FDeveloper\u002FPlatforms\u002FiPhoneSimulator.platform\u002FDeveloper\u002FSDKs\"\nSIM_APP=\"\u002FApplications\u002FXcode.app\u002FContents\u002FDeveloper\u002FApplications\u002FSimulator.app\u002FContents\u002FMacOS\u002FSimulator\"\n$SIM_APP -SimulateApplication $SDK_DIR\u002FiPhoneSimulator8.4.sdk\u002FApplications\u002FMobileSafari.app\u002FMobileSafari\n```\n\n#### Enable the inspector\n\nYour attached iOS devices must have ≥1 open browser tabs and the inspector enabled via:\n  `Settings > Safari > Advanced > Web Inspector = ON`\n\n### Start the proxy\n\n```console\nios_webkit_debug_proxy\n```\n\n* `--debug` for verbose output.\n* `--frontend` to specify a frontend\n* `--help` for more options.\n* `Ctrl-C` to quit. Also, the proxy can be left running as a background process.\n\n### Using with DevTools\n\nios_webkit_debug_proxy can be used with many tools such as Chrome DevTools and Safari Web Inspector.\n\n#### Chrome Devtools\n\nIn recent versions of Chrome and Safari there're major discrepancies between [Chrome Remote Debugging Protocol](https:\u002F\u002Fdeveloper.chrome.com\u002Fdevtools\u002Fdocs\u002Fdebugger-protocol) and [Webkit Inspector Protocol](https:\u002F\u002Fgithub.com\u002FWebKit\u002Fwebkit\u002Ftree\u002Fmaster\u002FSource\u002FJavaScriptCore\u002Finspector\u002Fprotocol), which means that newer versions of Chrome DevTools aren't compatible with Safari.\n\n#### Safari Web Inspector\nYou can use Safari Web Inspector extracted from Webkit sources, e.g. [artygus\u002Fwebkit-webinspector](https:\u002F\u002Fgithub.com\u002Fartygus\u002Fwebkit-webinspector) or [HimbeersaftLP\u002Fios-safari-remote-debug-kit](https:\u002F\u002Fgithub.com\u002FHimbeersaftLP\u002Fios-safari-remote-debug-kit).\n\n#### Firefox DevTools via Valence\nAnother option is [mozilla\u002Fvalence](https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fvalence) which enables Firefox DevTools to be used with iOS.\n\n## Configuration\n\n### View and inspect debuggable tabs\n\nNavigate to [localhost:9221](http:\u002F\u002Flocalhost:9221). You'll see a listing of all connected devices.\n\nClick through to view tabs available on each, and click through again to open the DevTools for a tab.\n\n### Setting the DevTools UI URL\n\n[Chrome DevTools UI](https:\u002F\u002Fdevelopers.google.com\u002Fchrome-developer-tools\u002F) used as a default frontend:\n\n    http:\u002F\u002Fchrome-devtools-frontend.appspot.com\u002Fstatic\u002F27.0.1453.93\u002Fdevtools.html\n\nYou can use the `-f` argument to specify different frontend source, like Chrome's local DevTools, a local\n[Chromium checkout](https:\u002F\u002Fchromium.googlesource.com\u002Fchromium\u002Fsrc\u002F+\u002Fmaster\u002Fthird_party\u002FWebKit\u002FSource\u002Fdevtools\u002F) or another URL:\n\n```console\n# examples:\nios_webkit_debug_proxy -f chrome-devtools:\u002F\u002Fdevtools\u002Fbundled\u002Finspector.html\nios_webkit_debug_proxy -f ~\u002Fchromium\u002Fsrc\u002Fthird_party\u002FWebKit\u002FSource\u002Fdevtools\u002Ffront_end\u002Finspector.html\nios_webkit_debug_proxy -f http:\u002F\u002Ffoo.com:1234\u002Fbar\u002Finspector.html\n```\n\nIf you use `-f chrome-devtools:\u002F\u002Fdevtools\u002Fbundled\u002Finspector.html`, you won't be able to click the links shown in `localhost:9222` as Chrome blocks clicking these URLs. However, you can copy\u002Fpaste them into the address bar.\n\nJust the same, you can apply the appropriate port (9222) and page (2) values below.\n\n    chrome-devtools:\u002F\u002Fdevtools\u002Fbundled\u002Finspector.html?ws=localhost:9222\u002Fdevtools\u002Fpage\u002F1\n\nThe `-f` value must end in \".html\". Due to security reasons, `https` URLs will not work; use `http` or force-allow with the URL bar's shield icon. As of Chrome 45, the primary URL [changed](https:\u002F\u002Fcodereview.chromium.org\u002F1144393004\u002F) from `devtools.html` to `inspector.html`.\n\nTo disable the frontend proxy, use the `--no-frontend` argument.\n\n#### Port assigment\n\nThe default configuration works well for most developers. The device_id-to-port assignment defaults to:\n\n    :9221 for the device list\n    :9222 for the first iOS device that is attached\n    :9223 for the second iOS device that is attached\n    ...\n    :9322 for the max device\n\nIf a port is in use then the next available port will be used, up to the range limit.\n\nThe port assignment is first-come-first-serve but is preserved if a device is detached and reattached, assuming that the proxy is not restarted, e.g.:\n\n  1. start the proxy\n  1. the device list gets :9221\n  1. attach A gets :9222\n  1. attach B gets :9223\n  1. detach A, doesn't affect B's port\n  1. attach C gets :9224 (not :9222)\n  1. reattach A gets :9222 again (not :9225)\n\nThe port assignment rules can be set via the command line with `-c`.  The default is equivalent to:\n\n    ios_webkit_debug_proxy -c null:9221,:9222-9322\n\nwhere \"null\" represents the device list.  The following example restricts the proxy to a single device and port:\n\n    ios_webkit_debug_proxy -c 4ea8dd11e8c4fbc1a2deadbeefa0fd3bbbb268c7:9227\n\n\n### Troubleshooting\n\n##### undefined reference to symbol 'log10@@GLIBC_2.2.5'\n```console\n\u002Fusr\u002Fbin\u002Fld: ios_webkit_debug_proxy-char_buffer.o: undefined reference to symbol 'log10@@GLIBC_2.2.5'\n\u002F\u002Flib\u002Fx86_64-linux-gnu\u002Flibm.so.6: error adding symbols: DSO missing from command line\n```\n\nRun this before `make`: `.\u002Fconfigure LIBS=\"-lm\"`\n\n##### error while loading shared libraries: libimobiledevice.so.6\n```console\nios_webkit_debug_proxy: error while loading shared libraries: libimobiledevice.so.6: cannot open shared object file: No such file or directory\n```\n\nRun `sudo ldconfig`\n\n##### idevice_id not found\n\nThe `idevice_id` executable may be found as part of the libimobiledevice-utils package.\n\n##### could not start com.apple.webinspector! success\n\n[Remove and rebuild libimobiledevice](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fios-webkit-debug-proxy\u002Fissues\u002F82#issuecomment-74205898).\n\n##### Could not connect to lockdownd (or doesn't work with iOS10+)\n> Could not connect to lockdownd. Exiting.: No such file or directory. Unable to attach \u003Clong id> inspector ios_webkit_debug_proxy\n\nCheck the device for [a prompt to trust the connected computer](http:\u002F\u002Fi.stack.imgur.com\u002FhPaqX.png). Choose \"Trust\" and try again.\n\n> Could not connect to lockdownd. Exiting.: Broken pipe. Unable to attach \u003Clong id> inspector\n\nor\n\n> Could not connect to lockdownd, error code -\\\u003Cnumber\\>. Exiting.\n\nMake sure you're using latest version of ios-webkit-debug-proxy\n\n##### Inspectable pages list is empty for iOS >= 12.2\n\nMake sure you're using latest version of ios-webkit-debug-proxy\n\n##### Can not see Simulator\n\n  - Make sure you started simulator before the proxy\n  - Check that webinspector switch is enabled (Settings -> Safari -> Advanced -> Web Inspector)\n  - Most likely simulator's web inspector daemon listens on ipv6 interface, check that you have `::1 localhost` line in `\u002Fetc\u002Fhosts`\n\n##### Building under Rosetta (OS X)\n\nlibimobildevice formulae [depends on](https:\u002F\u002Fgithub.com\u002FHomebrew\u002Fhomebrew-core\u002Fblob\u002Fd6c416caf0622f2aac47742bca679c3510d0b1d9\u002FFormula\u002Flibimobiledevice.rb#L30) openssl@1.1, which is key-only and requires the following env paths for the build\n\n```console\nexport PKG_CONFIG_PATH=\"\u002Fusr\u002Flocal\u002Fopt\u002Fopenssl@1.1\u002Flib\u002Fpkgconfig\"\nexport LDFLAGS=\"-L\u002Fusr\u002Flocal\u002Fopt\u002Fopenssl@1.1\u002Flib\"\nexport CPPFLAGS=\"-I\u002Fusr\u002Flocal\u002Fopt\u002Fopenssl@1.1\u002Finclude\"\n```\n\n##### If no luck so far...\nLastly, always try replugging in the USB cable.\n\n\n## IWDP Clients\n\nJSON-formatted APIs are provided for programmatic clients.\n  * \u003Chttp:\u002F\u002Flocalhost:9221\u002Fjson> will list all devices\n  * \u003Chttp:\u002F\u002Flocalhost:9222\u002Fjson> to list device \":9222\"'s tabs\n  * [ws:\u002F\u002Flocalhost:9222\u002Fdevtools\u002Fpage\u002F1]() to inspect a tab.\n\nSee the [examples\u002FREADME](examples\u002FREADME.md) for example clients: NodeJS, C, clientside JS, websocket and more.\n\n## Design\n\n![Alt overview](overview.png \"Overview\")\n\nView the [design document](design.md) for an overview of the source layout and architecture.\n\n## License and Copyright\n\nGoogle BSD license \u003Chttps:\u002F\u002Fdevelopers.google.com\u002Fgoogle-bsd-license>\nCopyright 2012 Google Inc.  \u003Cwrightt@google.com>\n\nThe proxy uses the following open-source packages:\n   - [libplist 2.2.0](http:\u002F\u002Fcgit.sukimashita.com\u002Flibplist.git)\n   - [libusbmuxd 2.0.0](http:\u002F\u002Fcgit.sukimashita.com\u002Fusbmuxd.git\u002F)\n   - [libimobiledevice 1.3.0](http:\u002F\u002Fcgit.sukimashita.com\u002Flibimobiledevice.git)\n","ios-webkit-debug-proxy 是一个用于 iOS 设备的 DevTools 代理工具，支持通过 Chrome 远程调试协议连接 Safari 和 UIWebViews。它允许开发者通过 WebSocket 连接向真实的或模拟的 iOS 设备发送命令。该工具采用 C 语言编写，具备跨平台特性，支持 Linux、MacOS 和 Windows 操作系统。适用于需要对 iOS 上的 Web 应用进行调试和性能分析的场景，如前端开发、移动应用测试等。安装过程相对直接，可通过 Homebrew（MacOS）、Scoop（Windows）或者从源码编译安装。使用时需确保设备已开启 Web Inspector 功能，并且对于 Linux 用户来说，还需要运行 `usbmuxd` 守护进程。","2026-06-11 03:07:09","top_language"]