{"id":17000606,"url":"https://github.com/bjeanes/plex-snoop","last_synced_at":"2025-03-22T08:23:14.261Z","repository":{"id":66393206,"uuid":"351367106","full_name":"bjeanes/plex-snoop","owner":"bjeanes","description":"Spy on HTTPS traffic between Plex Media Server and external services (e.g. https://plex.tv)","archived":false,"fork":false,"pushed_at":"2021-04-04T06:43:21.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-14T21:13:31.632Z","etag":null,"topics":["debugger","mitm","mitmproxy","plex","plex-media-server","plex-server"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bjeanes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-03-25T08:50:06.000Z","updated_at":"2024-01-18T09:43:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"63bdca15-60e1-40cc-ac62-ac3cadfab0a6","html_url":"https://github.com/bjeanes/plex-snoop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjeanes%2Fplex-snoop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjeanes%2Fplex-snoop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjeanes%2Fplex-snoop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjeanes%2Fplex-snoop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bjeanes","download_url":"https://codeload.github.com/bjeanes/plex-snoop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244926736,"owners_count":20533185,"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":["debugger","mitm","mitmproxy","plex","plex-media-server","plex-server"],"created_at":"2024-10-14T04:12:27.299Z","updated_at":"2025-03-22T08:23:14.243Z","avatar_url":"https://github.com/bjeanes.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plex snoop\n\nSets up a Plex Media Server MITMd by [`mitmproxy`](https://mitmproxy.org/) with the aim of learning more about how the\nPMS talks to Plex.tv and other upstream services (metadata, avatars, analytics, etc).\n\nThis is in service of project I am building which needs to talk to the undocumented Plex.tv APIs. You are welcome to\nuse it too.\n\nSee [`docs/API.md`](docs/API.md) for some of the requests I'm trying to document.\n\n## Usage\n\nMake sure you have Firefox installed, as the `snoop.rb` script opens a Firefox instance configured with the proxy so\nthat you can snoop Plex Web traffic too.\n\n``` sh-session\n$ ruby ./snoop.rb\n```\n\nThe `docker-compose.yml` sets a default view filter for `mitmproxy` to hide some noisy and irrelevant requests:\n\n```\n! ( ~a | ~m OPTIONS | ~t html | ~t woff2 | ~c 301 | ~d google.com | ~d facebook | ~d gstatic.com | ~d mozilla | ~d firefox | ~d sentry | ~d transifex.net | ~d digicert | /wp-content/ | resources-cdn )\n```\n\nThis hides all assets (JS, CSS, images, etc), all HTML responses (I only care about API calls), redirects, and several\ndomains related to the auth pages that Plex Web shows or Firefox internals.\n\nYou'll have to remove it from `docker-compose.yml`, edit it to what you want, or use \"Edit Options\" after `mitmweb`\nboots to see requests which are hidden.\n\nAdditionally, it can be helpful to delineate PMS requests from Plex Web requests. I don't know if I can auto-configure\nthis, but setting the \"Highlight\" field to the following filter will highlight non-Firefox requests:\n\n```\n! ~hq \"User-Agent.*Firefox\"\n```\n\n## License\n\n```\nCopyright 2021 Bo Jeanes\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit\npersons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the\nSoftware.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\nWARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\nOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjeanes%2Fplex-snoop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjeanes%2Fplex-snoop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjeanes%2Fplex-snoop/lists"}