Up-to-date simple useragent faker with real world database.
sh
pip install fake-useragent
Or if you have multiple Python / pip versions installed, use pip3
:
sh
pip3 install fake-useragent
```py from fake_useragent import UserAgent ua = UserAgent()
ua.ie
ua.msie
ua['Internet Explorer']
ua.opera
ua.chrome
ua.google
ua['google chrome']
ua.firefox
ua.ff
ua.safari
ua.random ```
If you want to specify your own browser list, you can do that via the browsers
argument (default is: ["chrome", "edge", "internet explorer", "firefox", "safari", "opera"]
).
py
from fake_useragent import UserAgent
ua = UserAgent(browsers=['edge', 'chrome'])
ua.random
You can add your own fallback string using the fallback
parameter, in rare cases everything else failed:
```py import fake_useragent
ua = fake_useragent.UserAgent(fallback='your favorite Browser')
ua.random == 'your favorite Browser' ```
If you will try to get unknown browser:
```py from fake_useragent import UserAgent ua = UserAgent() ua.unknown
```
By default fake-useragent
will use it's local (browsers.json
) data file as the data source.
If you don't want to use the local data, but use the external data source to retrieve the user-agents. Set use_external_data
to True
:
py
from fake_useragent import UserAgent
ua = UserAgent(use_external_data=True)
As a fallback method fake-useragent
will retrieve it's data from an external data source and stores in a cache file or when you expcility set use_external_data=True
as parameter.
You can trigger an update to the cache file by calling update()
:
py
from fake_useragent import UserAgent
ua = UserAgent()
ua.update()
The default location of the external resource cache file is in your os temp dir, like /tmp
.
You can change the temp directory by changing cache_path
(mainly useful together when use_external_data
is set to True).
```py import fake_useragent
location = '/home/user/fake_useragent%s.json' % fake_useragent.VERSION
ua = fake_useragent.UserAgent(use_external_data=True, cache_path=location) ua.random ```
If you need to safe some attributes from overriding them in UserAgent by __getattr__
method
use safe_attrs
you can pass there attributes names.
At least this will prevent you from raising FakeUserAgentError when attribute not found.
For example, when using fakeuseragent with injections <https://github.com/tailhook/injections>
you need to:
```py import fake_useragent
ua = fake_useragent.UserAgent(safe_attrs=('injections',)) ```
Please, do not use if you don't understand why you need this. This is magic for rarely extreme case.
Make sure that you using latest version!
sh
pip install --upgrade fake-useragent
Or if that isn't working, try to install the latest package version like this (1.1.3
is an example, check what the latest version is on PyPi):
sh
pip install fake-useragent==1.1.3
Check version via the Python console:
```py import fake_useragent
print(fake_useragent.VERSION) ```
And you are always welcome to post issues.
Please do not forget to mention the version that you are using.
Since GitHub Actions is unable to reach useragentstring.com. We can run the script below to automatically scrape the user-agent strings from the external data source. The script will copy the JSONlines file to the src/fake_useragent/data
directory. Execute:
sh
./update_data_file.sh
The data JSON file is part of the Python package, see pyproject.toml. Read more about Data files support.
sh
pip install -r requirements.txt
tox
To fix imports:
sh
pip install -r requirements.txt
ruff --select="I" --fix .
1.1.1 December 4, 2022
Remove whitespaces from user agent strings, this is a patch release
1.1.0 November 26, 2022
Add pkg_resource
as fallback mechanism in trying to retrieve the local JSON data file
1.0.1 November 10, 2022
Add importlib-metadata
& importlib-resources
as dependencies
files()
workingimportlib_metadata
should now also work on Python version before 3.8Remove obsolete MANIFEST.in
file
1.0.0 November 17, 2022
Make the JSON Lines data file part of the Python package, data is retrieved locally
myproject.toml
file with package-data
supportMake real unit-tests which should run reliable, fast, independent and without Internet connection
0.1.14 November 5, 2022
Improve code quality standards using modern Python >=3.7 syntax
pyproject.toml
build system format + syntax checktox.ini
fileAnd various small fixes
0.1.13 October 21, 2022
Implement browsers
argument, allowing you to override the browser names you want to use
Using black
Python formatter in favour of Flake
0.1.12 March 31, 2022
forked
0.1.11 October 4, 2018
moved s3 + cloudfront
fallback to heroku.com
, cuz someone from Florida did ~25M requests last month
0.1.10 February 11, 2018
Minor fix docs cloudfront
url
0.1.9 February 11, 2018
fix w3schools.com
renamed IE/Edge
to Edge/IE
heroku.com
fallback to s3 + cloudfront
stop testing Python3.3 and pypy
0.1.8 November 2, 2017
fix useragentstring.com
Can't connect to local MySQL server through socket
0.1.7 April 2, 2017
fix broken README.rst
0.1.6 April 2, 2017
fixes bug use_cache_server
do not affected anything
w3schools.com <https://www.w3schools.com/browsers/browsers_stats.asp>
_ moved to https
verify_ssl
options added, by default it is True
(urllib.urlopen
ssl context for Python 2.7.9- and 3.4.3- is not supported)
0.1.5 February 28, 2017
added ua.edge
alias to Internet Explorer
Edge
statisticuse_cache_server
option addedIncreased fake_useragent.settings.HTTP_TIMEOUT
to 5 seconds
0.1.4 December 14, 2016
Added custom data file location support
fallback
browser support, in case of unavailable data sourcesfake_useragent.FakeUserAgent
for fake_useragent.UserAgent
fake_useragent.UserAgentError
for fake_useragent.FakeUserAgentError
fake_useragent.settings.HTTP_TIMEOUT
to 3 secondsAdded safe_attrs
for prevent overriding by __getattr__
0.1.3 November 24, 2016
Added hosted data file, when remote services is unavailable
fake_useragent.errors.FakeUserAgentError
in case when there is not way to download datafake_useragent.errors.FakeUserAgentError
instead of None
in case of unknown browserAdded gevent.sleep
support in gevent
patched environment when trying to download data
X.X.X xxxxxxx xx, xxxx
You can visit authors page.
Fixes #96, #109
win10
, macos
or linux
) and on usage percentage (percent
field)To Developers (fake-useragent, @fake-useragent, @hellysmile): Upgrade to paid dynos asap for us to use your services, or move to a vps To Developers (rest, like me): There's nothing we can do on our sides, either wait or use some other pypi package
The list of user-agent strings on https://useragentstring.com/ is outdated.
Any idea on how to update the list on that website, and then keep it up to date?
Or maybe it is time to move to a different API provider? or host an alternative to https://useragentstring.com/.
from fake_useragent import UserAgent ua = UserAgent(use_cache_server=False) print(ua.chrome) Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36
(Windows NT 6.1; WOW64) -->> does not fit my system. the website can find out i'm using a fake useragent. because he knows i am in windows 10 or linux
Hi there,
this is mostly a compatibility fix with the builtin help
function: here's an example (Python 3.6):
```python
import fake_useragent ua = fake_useragent.FakeUserAgent() help(ua) Traceback (most recent call last): File "/home/althonos/.local/lib/python3.6/site-packages/fake_useragent/fake.py", line 136, in getattr return random.choice(self.data_browsers[browser]) KeyError: 'name'
During handling of the above exception, another exception occurred:
... ```
help
will crash on any FakeUserAgent
instance that does not have __name__
in the safe_attrs
. This means that help
will also crash on any object that has a FakeUserAgent
attribute or property, and so on.
Since I'm confident there aren't many persons aware of this, adding __name__
to the default safe_attrs
value will prevent this bug without having end-users to manually patch it.
I writes a spider to crawl the web from PC front with ua.random
, but sometimes, it would redirect to mobile front , that's not what I expected.
I found it caused by ua.random
would return a mobile ua as below:
```
import requests
res = requests.get("https://fake-useragent.herokuapp.com/browsers/0.1.5")
print res.json()['browsers']['safari'][41]
``
From https://github.com/hellysmile/fake-useragent/issues/10#issuecomment-341654267, there will be eventually added
ua.desktopand
ua.mobile`, I'm really looking forward to it.
pkg_resource
as fallback mechanism in trying to retrieve the local JSON data fileBug fix release.
importlib-metadata
& importlib-resources
as dependenciesfiles()
workingimportlib_metadata
should now also work on Python version before 3.8MANIFEST.in
fileFinally, a major release! Version 1.0.0 stable. I hope you like it.
myproject.toml
file with package-data
supportpython python3 user agent fake faker scraping user-agent user-agent-spoofer useragent useragent-scraper