[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7111":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":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},7111,"Wormholy","pmusolino\u002FWormholy","pmusolino","iOS network debugging, like a wizard 🧙‍♂️","",null,"Swift",2601,210,20,10,0,1,12,28.97,"MIT License",false,"master",true,[25,26,27,28,29,30,31,32,33],"alamofire","charles","debugger","https","ios","logger","logging","network","nsurlsession","2026-06-12 02:01:34","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpmusolino\u002FWormholy\u002Fmaster\u002Flogo.png\" alt=\"Icon\"\u002F>\n\u003C\u002Fp>\n\n[![Language](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSwift-5-orange.svg)]()\n[![Pod version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCocoapods-Compatible%20-blue)](https:\u002F\u002Fcocoapods.org\u002Fpods\u002FWormholy)\n[![SPM Compatible](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSPM-Compatible-green.svg)](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F)\n\nStart debugging iOS network calls like a wizard, without extra code! Wormholy makes debugging quick and reliable.\n\n**Features:**\n\n- [x] No code to write and no imports.\n- [x] Record all app traffic that uses `NSURLSession`.\n- [x] Reveal the content of all requests, responses, and headers simply by shaking your phone!\n- [x] No headaches with SSL certificates on HTTPS calls.\n- [x] Find, isolate, and fix bugs quickly.\n- [x] Swift & Objective-C compatibility.\n- [x] Also works with external libraries like `Alamofire` & `AFNetworking`.\n- [x] Ability to blacklist hosts from being recorded using the array `ignoredHosts`.\n- [x] Ability to export API requests as a Postman collection.\n- [x] Ability to share cURL representations of API requests.\n- [x] Programmatically enable or disable Wormholy for specific session configurations.\n- [x] Control the shake gesture activation with the `shakeEnabled` property.\n- [x] Filter responses by status code for precise debugging.\n- [x] View request stats, including HTTP methods breakdown, status code distribution, error types, response size stats, and more.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpmusolino\u002FWormholy\u002Frefs\u002Fheads\u002Ffeat\u002Fswift-ui-ios-15-support\u002Fscreens.webp\" alt=\"Screens\"\u002F>\n\u003C\u002Fp>\n\n## Requirements\n\n- iOS 16.0+ (Need an older version? [Please use version 1.7.x](https:\u002F\u002Fgithub.com\u002Fpmusolino\u002FWormholy\u002Freleases\u002Ftag\u002F1.7.0))\n- Xcode 15+\n- Swift 5\n\n## Usage\n\nIntegrating Wormholy into your project is simple, and it works like magic! **Shake your device** or simulator to access Wormholy. There's no need to import the library into your code.\n\n\u003Cu>**It is recommended to install it only in debug mode and not integrate it into production. Please remove it before sending your apps to production.**\u003C\u002Fu> The easiest way to do this is with CocoaPods:\n\n```shell\npod 'Wormholy', :configurations => ['Debug']\n```\n\nYou can also integrate Wormholy using the **Swift Package Manager**!\n\n### Configuration Options\n\n- **Ignored Hosts**: Specify hosts to be excluded from logging using `Wormholy.ignoredHosts`. This is useful for ignoring traffic to certain domains.\n- **Logging Limit**: Control the number of logs retained with `Wormholy.limit`. This helps manage memory usage by limiting the amount of data stored.\n- **Default Filter**: Set a default filter for the search box with `Wormholy.defaultFilter` to streamline your debugging process.\n- **Enable\u002FDisable**: Use `Wormholy.setEnabled(_:)` to toggle request tracking globally. You can also enable or disable it for specific `URLSessionConfiguration` instances using `Wormholy.setEnabled(_:sessionConfiguration:)`.\n- **Shake Gesture**: Control the activation of Wormholy via shake gesture with `Wormholy.shakeEnabled`.\n- **Status Check**: Use `Wormholy.isWormholyEnabled()` to inspect whether global Wormholy tracking is currently enabled.\n\n### Example Configuration\n\n```swift\nfunc configureWormholy() {\n  Wormholy.ignoredHosts = [\"example.com\", \"analytics.internal\"]\n  Wormholy.limit = 200\n  Wormholy.defaultFilter = \"status:500\"\n  Wormholy.shakeEnabled = true\n\n  \u002F\u002F Global tracking for URLSession traffic.\n  Wormholy.setEnabled(true)\n\n  \u002F\u002F Use the session-specific API when you want to override behavior\n  \u002F\u002F for a particular configuration instance.\n  let configuration = URLSessionConfiguration.default\n  Wormholy.setEnabled(false, sessionConfiguration: configuration)\n\n  let session = URLSession(configuration: configuration)\n  _ = session\n}\n```\n\n### Notes on Session Configurations\n\nWormholy automatically hooks `URLSessionConfiguration.default` and `URLSessionConfiguration.ephemeral`.\n\nUse `Wormholy.setEnabled(_:sessionConfiguration:)` when you want to explicitly enable or disable Wormholy for a specific configuration instance before creating the `URLSession`:\n\n```swift\nlet configuration = URLSessionConfiguration.ephemeral\nWormholy.setEnabled(false, sessionConfiguration: configuration)\nlet session = URLSession(configuration: configuration)\n```\n\nBackground sessions are a separate case: Apple does not support custom `URLProtocol` classes with background `URLSessionConfiguration`, so Wormholy cannot be injected there via `protocolClasses`.\n\n### Notes on Ignored Hosts\n\n`Wormholy.ignoredHosts` uses suffix matching on the request host.\n\nFor example, if you set:\n\n```swift\nWormholy.ignoredHosts = [\"example.com\"]\n```\n\nWormholy will ignore requests to both `example.com` and subdomains such as `api.example.com`.\n\n### Triggering Wormholy\n\nIf you prefer not to use the shake gesture, you can disable it using the [environment variable](https:\u002F\u002Fmedium.com\u002F@derrickho_28266\u002Fxcode-custom-environment-variables-681b5b8674ec) `WORMHOLY_SHAKE_ENABLED` = `NO`.\n\nTo trigger Wormholy manually from another point in your app without using the shake gesture, post the `wormholy_fire` notification:\n\n```swift\nNotificationCenter.default.post(name: NSNotification.Name(rawValue: \"wormholy_fire\"), object: nil)\n```\n\nBy following these steps and configurations, you can effectively integrate Wormholy into your development workflow, enhancing your ability to debug network requests efficiently.\n\n## Contributing\n\n- If you **need help** or you'd like to **ask a general question**, open an issue.\n- If you **found a bug**, open an issue.\n- If you **have a feature request**, open an issue.\n- If you **want to contribute**, submit a pull request.\n\n## Acknowledgements\n\n**Made with ❤️ by [Paolo Musolino](https:\u002F\u002Fgithub.com\u002Fpmusolino).**\n\n***Follow me on:***\n#### 💼 [LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fpaolomusolino\u002F)\n#### 🤖 [X](https:\u002F\u002Fx.com\u002Fpmusolino)\n\n## MIT License\n\nWormholy is available under the MIT license. See the LICENSE file for more information.","Wormholy 是一个用于 iOS 网络调试的工具，能够帮助开发者高效地监控和调试应用中的网络请求。其核心功能包括无需额外编码即可记录所有基于 `NSURLSession` 的流量、通过摇动设备查看请求和响应内容以及支持 SSL 证书处理等。此外，Wormholy 还提供了与外部库如 Alamofire 和 AFNetworking 的兼容性、API 请求导出为 Postman 集合等功能，并允许用户自定义忽略主机列表以排除特定域的流量。适用于需要快速定位并解决 iOS 应用网络层问题的各种开发场景，特别是当项目使用了复杂的网络架构或第三方网络库时。",2,"2026-06-11 03:10:35","top_language"]