{"id":37080336,"url":"https://github.com/lobstrio/shadow-useragent","last_synced_at":"2026-01-14T09:45:12.232Z","repository":{"id":55114414,"uuid":"199880276","full_name":"lobstrio/shadow-useragent","owner":"lobstrio","description":"Pick the most common user-agents on the Internet 👻","archived":false,"fork":false,"pushed_at":"2021-01-09T07:36:50.000Z","size":64,"stargazers_count":170,"open_issues_count":4,"forks_count":11,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-11-27T20:07:37.969Z","etag":null,"topics":["scraping","scraping-python","useragent","useragent-switch"],"latest_commit_sha":null,"homepage":"","language":"Python","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/lobstrio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-31T15:14:03.000Z","updated_at":"2025-06-22T13:09:22.000Z","dependencies_parsed_at":"2022-08-14T12:21:02.576Z","dependency_job_id":null,"html_url":"https://github.com/lobstrio/shadow-useragent","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lobstrio/shadow-useragent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lobstrio%2Fshadow-useragent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lobstrio%2Fshadow-useragent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lobstrio%2Fshadow-useragent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lobstrio%2Fshadow-useragent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lobstrio","download_url":"https://codeload.github.com/lobstrio/shadow-useragent/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lobstrio%2Fshadow-useragent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416120,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["scraping","scraping-python","useragent","useragent-switch"],"created_at":"2026-01-14T09:45:11.606Z","updated_at":"2026-01-14T09:45:12.224Z","avatar_url":"https://github.com/lobstrio.png","language":"Python","readme":"shadow-useragent\n==============\n\n`shadow-useragent` gives you access to the most commonly used UserAgents on the Internet, safe from outdated data.\n\nBehold, the power of UserAgent: \n```python3\n\u003e\u003e\u003e import shadow_useragent\n\u003e\u003e\u003e ua = shadow_useragent.ShadowUserAgent()\n\u003e\u003e\u003e ua.percent(0.05)\n'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15'\n\u003e\u003e\u003e ua.most_common\n'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'\n```\n\nWhen you use our library, we register your User Agent, and update the frequency of use. The percent of use is thus dynamically updated, and never outdated. No more unused header that reveals your true identity, you are protected by the group.\n\nBesides, you can rely on traditional features, like picking an header from outstanding IE browser family.\n\n\nFeature Support\n------------\n\n`shadow-useragent` is the only safe, and updated user-agent package.\n\n* UserAgent Percentage of Use\n* Day-to-day Update\n* Exhaustive UserAgents Family\n* Elegant @property Methods\n* Community-Based Package\n\n`shadow-useragent` supports Python 2.7 \u0026 3.4–3.7, and runs great on PyPy.\n\nInstallation\n------------\n\nTo install `shadow-useragent`, simply use pipenv (or pip, of course):\n\n```shell\n$ pip install shadow-useragent\n👻  \n```\n\nNever disappointed.\n\nDocumentation\n-----\nDocumentation is not available for now. Unlimited delivery coming soon.\n\n\nUsage\n-----\n```python3\n\nimport shadow_useragent \nua = shadow_useragent.ShadowUserAgent()\n\n# Access user-agent per Percentage of Use\nua = ua.percent(0.03) \nua = ua.most_common\n\n# Access user-agent per Browser Family\nua = ua.firefox \nua = ua.chrome \nua = ua.safari \nua = ua.edge \nua = ua.ie\nua = ua.android\nua = ua.ipad\n\n# Random Access ;)\nua = ua.random\nua = ua.random_nomobile # Mobile-UA excluded\n\n# If you want an Exhaustive list, you can play with\nuas = ua.get_uas()\nuas = ua.get_sorted_uas()  # Sorted List per Percentage of Use\n\n\u003e\u003e\u003e uas[0]\n{\n  'id':1,\n  'scraping_time':'2019-07-31T17:05:15Z',\n  'percent':9.6,\n  'useragent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',\n  'system':'Chrome 75.0 Win10',\n  'browser_family':'Chrome',\n  'browser_version_string':'75.0.3770',\n  'os_family':'Windows',\n  'os_version_string':'10',\n  'device_family':'Other',\n  'device_brand':None,\n  'device_model':None\n}\n```\n\nNotes\n-----\nContact for any issues or request : **simon.rochwerg@lobstr.io**\n\n`shadow-useragent` stores collected UAs in the folder of your pip packages: site-packages/shadow_useragent/data.\n\nThe UserAgents' list is automatically updated with a shadow call (mm) to the shadow-useragent API every 24 hours. \nIf you want to force the update :\n\n```python3\nfrom shadow_useragent import ShadowUserAgent\nshadow_useragent = ShadowUserAgent()\nshadow_useragent.force_update()\n```\n[![Run on Repl.it](https://repl.it/badge/github/lobstrio/shadow-useragent)](https://repl.it/github/lobstrio/shadow-useragent)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flobstrio%2Fshadow-useragent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flobstrio%2Fshadow-useragent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flobstrio%2Fshadow-useragent/lists"}