[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2317":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":17,"stars7d":15,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":15,"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":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},2317,"wechat-finder-dlna","gtoxlili\u002Fwechat-finder-dlna","gtoxlili","把电脑伪装成电视，通过 DLNA \u002F AirPlay 2 \u002F Chromecast 投屏捕获视频号直播流地址，支持加密音频流捕获 — 纯 Python，无需抓包\u002F证书\u002F代理","https:\u002F\u002Fpypi.org\u002Fproject\u002Fwechat-finder-dlna\u002F",null,"Python",122,19,98,3,0,1,9,3.9,"GNU General Public License v3.0",false,"main",true,[25,26,27,28,29,30,31,32,33,34],"airplay","chromecast","dlna","google-cast","live-stream","screen-casting","stream-capture","upnp","wechat","weixin","2026-06-12 02:00:40","# wechat-finder-dlna\n\n[中文文档](README_CN.md) · **[Rust version →](https:\u002F\u002Fgithub.com\u002Fgtoxlili\u002Fwechat-finder-dlna-rs)**\n\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fwechat-finder-dlna)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fwechat-finder-dlna\u002F)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fwechat-finder-dlna)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fwechat-finder-dlna\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fgtoxlili\u002Fwechat-finder-dlna)](LICENSE)\n\nGrab WeChat Video Channel (视频号) live stream URLs by faking a TV on your LAN.\n\nNo proxy, no certificate, no MITM — just standard casting protocols your smart TV already speaks.\n\nSupports **three casting protocols** simultaneously:\n\n| Protocol | Discovery | How it captures |\n|----------|-----------|----------------|\n| **DLNA\u002FUPnP** | SSDP multicast | `SetAVTransportURI` SOAP action |\n| **AirPlay** | mDNS\u002FBonjour | HTTP `\u002Fplay` endpoint |\n| **Google Cast** | mDNS | Cast V2 `LOAD` command over TLS |\n\n```\n┌──────────┐  DLNA \u002F AirPlay  ┌─────────────────────┐\n│  WeChat   │  \u002F Chromecast   │ wechat-finder-dlna  │\n│  (phone)  │ ──────────────► │ (your computer)     │\n└──────────┘   \"投屏\"         └────────┬────────────┘\n                                       │\n                              captures the m3u8 URL\n                                       │\n                                       ▼\n                              ffmpeg \u002F VLC \u002F mpv \u002F ...\n```\n\nThe tool advertises itself as a media receiver on the local network using all three protocols.\nWhen you cast a live stream from WeChat (or Bilibili, iQiyi, Youku — anything that supports casting),\nthe app sends the real stream URL. We grab it and either print it or pipe it straight into ffmpeg.\n\nWeChat can't tell the difference between this and a real TV — there's nothing to detect.\n\n## Install\n\n```bash\n# uv (recommended)\nuv tool install wechat-finder-dlna\n\n# pip\npip install wechat-finder-dlna\n```\n\nPython 3.10+, dependencies are installed automatically.\n\n## Quick start\n\n```bash\n# All protocols enabled by default\nwechat-finder-dlna\n\n# DLNA only (original behavior)\nwechat-finder-dlna --protocol dlna\n\n# AirPlay + Chromecast only\nwechat-finder-dlna --protocol airplay cast\n\n# Record to file (needs ffmpeg)\nwechat-finder-dlna --record live.mp4 --duration 01:00:00\n\n# Pipe to VLC\nwechat-finder-dlna | xargs vlc\n\n# Show up as \"Living Room TV\" in the cast list\nwechat-finder-dlna --name \"Living Room TV\"\n```\n\nAs a library:\n\n```python\nfrom wechat_finder_dlna import capture\n\nurl = capture(name=\"My Recorder\")\n# do whatever you want with the m3u8 URL\n\n# Specify protocols\nurl = capture(name=\"My TV\", protocols=[\"dlna\", \"airplay\"])\n```\n\n## Requirements\n\n- Python 3.10+\n- Phone and computer on the **same WiFi \u002F LAN**\n- `ffmpeg` only if you use `--record`\n## How it works\n\n### DLNA\u002FUPnP\n1. **SSDP multicast** — announces a MediaRenderer on `239.255.255.250:1900`.\n2. **UPnP device description** — replies with XML descriptor that looks like a TV.\n3. **SOAP control** — the app sends `SetAVTransportURI` with the stream URL.\n\n### AirPlay\n1. **mDNS\u002FBonjour** — advertises an `_airplay._tcp` service via zeroconf.\n2. **HTTP server** — handles the `\u002Fplay` endpoint where senders POST the video URL.\n\n### Google Cast (Chromecast)\n1. **mDNS** — advertises a `_googlecast._tcp` service.\n2. **TLS + Cast V2** — runs a TLS server on port 8009 speaking the Cast protobuf protocol.\n3. **Media LOAD** — captures the `contentId` URL from the sender's LOAD command.\n\n## FAQ\n\n**Does this work with replays \u002F VODs?**\nThis is for live streams. For VOD downloads, look into tools that use the WeChat Web sync protocol.\n\n**Does this work with apps other than WeChat?**\nYes — any app that supports DLNA\u002FAirPlay\u002FChromecast casting works. Bilibili, iQiyi, Youku, Tencent Video, etc.\n\n**Can WeChat detect or block this?**\nNo. The protocol is standard UPnP\u002FDLNA. From WeChat's perspective this is just another TV on the network.\n\n## Rust version\n\n> **[wechat-finder-dlna-rs](https:\u002F\u002Fgithub.com\u002Fgtoxlili\u002Fwechat-finder-dlna-rs)** — same protocols, async Rust, compiles to a single static binary with zero runtime dependencies. Better suited for long-running capture, embedded\u002FNAS deployment, or if you don't want a Python runtime.\n\n## See also\n\n- [dlnap](https:\u002F\u002Fgithub.com\u002Fttymck\u002Fdlnap) — control DLNA renderers from the command line (the other direction: you push *to* a TV)\n- [macast](https:\u002F\u002Fgithub.com\u002Fxfangfang\u002FMacast) — full-featured DLNA renderer with GUI, uses mpv for playback\n\n## License\n\nGPL-3.0\n","wechat-finder-dlna 项目能够将电脑伪装成电视，通过DLNA、AirPlay 2和Chromecast协议捕获微信视频号直播流地址。其核心功能包括支持多种投屏协议（DLNA\u002FUPnP, AirPlay, Google Cast）同时工作，无需额外的抓包工具、证书或代理即可获取加密音频流。该工具适用于需要在本地网络环境下从手机向电脑投屏并录制直播内容的场景，如教育、会议记录等。基于纯Python开发，易于安装和使用，兼容性好。",2,"2026-06-11 02:49:28","CREATED_QUERY"]