Un faux agent utilisateur simple et à jour avec une base de données du monde réel.
desktop
, tablet
et/ou mobile
)useragent
, percent
, type
, device_brand
, browser
, browser_version
, os
, os_version
et platform
pip install fake-useragent
Ou si vous avez plusieurs versions de Python/pip installées, utilisez pip3
:
pip3 install fake-useragent
Exemples d'utilisation simples ci-dessous, voir également les chapitres suivants de ce fichier Lisez-moi pour des utilisations plus avancées :
from fake_useragent import UserAgent
ua = UserAgent ()
# Get a random browser user-agent string
print ( ua . random )
# Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0
# Or get user-agent string from a specific browser
print ( ua . chrome )
# Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
print ( ua . google )
# Mozilla/5.0 (iPhone; CPU iPhone OS 18_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/343.0.695551749 Mobile/15E148 Safari/604.1
print ( ua [ 'Chrome' ])
# Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
print ( ua . firefox )
# Mozilla/5.0 (Android 14; Mobile; rv:133.0) Gecko/133.0 Firefox/133.0
print ( ua . ff )
# Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0
print ( ua . safari )
# Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Mobile/15E148 Safari/604.1 Ddg/17.6
print ( ua . opera )
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0
print ( ua . edge )
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0
Fonctionnalités supplémentaires proposées désormais par fake-useragent depuis la v1.2.0.
Si vous souhaitez spécifier votre propre liste de navigateurs, vous pouvez le faire via l'argument browsers
(la valeur par défaut est : ["Google", "Chrome", "Firefox", "Edge", "Opera"," Safari", "Android", "Yandex Browser", "Samsung Internet", "Opera Mobile", "Mobile Safari", "Firefox Mobile", "Firefox iOS", "Chrome Mobile", "Chrome Mobile iOS", "Mobile Safari UI/WKWebView", "Edge Mobile", "DuckDuckGo Mobile", "MiuiBrowser", "Whale", "Twitter", "Facebook", "Amazon Silk"]
.
Cet exemple renverra uniquement des agents utilisateurs aléatoires d'Edge et de Chrome :
from fake_useragent import UserAgent
ua = UserAgent ( browsers = [ 'Edge' , 'Chrome' ])
ua . random
Remarque : de faux agents utilisateurs connus sur les navigateurs : Chrome, Edge, Firefox, Safari, Opera, Android, Opera Mobile, Mobile Safari, Firefox Mobile, Firefox iOS, Chrome Mobile, Chrome Mobile iOS et plus encore (voir à nouveau la liste complète ci-dessus).
Remarque n°2 : Depuis fakeuser-agent v2.0.0, les noms des navigateurs sont sensibles à la casse !
Si vous souhaitez spécifier vos propres systèmes d'exploitation, vous pouvez le faire via l'argument os
(la valeur par défaut est : ["Windows", "Linux", "Ubuntu", "Chrome OS", "Mac OS X", "Android", "iOS"]
).
Dans cet exemple, vous ne récupérerez que les agents utilisateurs Linux :
from fake_useragent import UserAgent
ua = UserAgent ( os = 'Linux' )
ua . random
Remarque : depuis fakeuser-agent v2.0.0, les noms du système d'exploitation sont sensibles à la casse !
Vous pouvez également spécifier le type de plates-formes que vous souhaitez utiliser, vous pouvez le faire via l'argument platforms
(la valeur par défaut est ["desktop", "mobile", "tablet"]
. Cet exemple ne renverra que des agents utilisateurs aléatoires à partir d'un mobile. appareil:
from fake_useragent import UserAgent
ua = UserAgent ( platforms = 'desktop' )
ua . random
Si vous souhaitez renvoyer des chaînes d'agent utilisateur plus récentes, vous pouvez jouer avec l'argument min_version
(la valeur par défaut est : 0.0
, ce qui signifie que tous les agents utilisateurs correspondront).
Dans cet exemple, vous obtenez uniquement les agents utilisateurs dotés d'une version minimale de 120.0 :
from fake_useragent import UserAgent
ua = UserAgent ( min_version = 120.0 )
ua . random
Pour des raisons de compatibilité ascendante, un pourcentage d'utilisation minimum peut toujours être spécifié avec l'argument min_percentage
. Cependant, la liste actuelle des agents utilisateurs ne contient pas cette statistique. Par conséquent, tous les agents utilisateurs correspondront.
Astuce : Bien sûr, vous pouvez combiner tous ces arguments à votre guise !
Depuis la version 1.3.0, nous vous proposons désormais également les propriétés « get » suivantes qui renvoient l'intégralité du dictionnaire Python de l'UA, au lieu de seulement la chaîne de l'agent utilisateur :
Attention Les objets JSON bruts (dans un dictionnaire Python) sont renvoyés "tels quels". Cela signifie que cette structure de données pourrait changer à l’avenir !
Sachez que ces propriétés « get » ci-dessous pourraient ne pas renvoyer les mêmes paires clé/valeur à l’avenir. Utilisez
ua.random
ou similaire comme mentionné ci-dessus, si vous souhaitez utiliser une interface stable.
from fake_useragent import UserAgent
ua = UserAgent ()
# Random user-agent dictionary (object)
ua . getRandom
# {'percent': 0.8, 'useragent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76', 'system': 'Edge 116.0 Win10', 'browser': 'edge', 'version': 116.0, 'os': 'win10'}
# More get properties:
ua . getFirefox
# {'percent': 0.3, 'useragent': 'Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0', 'system': 'Firefox 118.0 Win10', 'browser': 'firefox', 'version': 118.0, 'os': 'win10'}
ua . getChrome
ua . getSafari
ua . getEdge
# And a method with an argument.
# This is exactly the same as using: ua.getFirefox
ua . getBrowser ( 'firefox' )
Vous pouvez remplacer la chaîne de secours à l'aide du paramètre fallback
. Dans de très rares cas, quelque chose a échoué :
from fake_useragent import UserAgent
ua = UserAgent ( fallback = 'your favorite Browser' )
# in case if something went wrong, one more time it is REALLY!!! rare case
ua . random == 'your favorite Browser'
Si vous essayez d'obtenir un navigateur inconnu :
from fake_useragent import UserAgent
ua = UserAgent ()
print ( ua . unknown )
#Error occurred during getting browser: randm, but was suppressed with fallback.
#Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
Si vous devez empêcher certains attributs de les remplacer dans UserAgent par la méthode __getattr__
utilisez safe_attrs
vous pouvez y transmettre les noms d'attributs. Au moins, cela vous empêchera de déclencher FakeUserAgentError lorsque l'attribut est introuvable.
Par exemple, lorsque vous utilisez un faux agent utilisateur avec injections <https://github.com/tailhook/injections>
vous devez :
from fake_useragent import UserAgent
ua = UserAgent ( safe_attrs = ( '__injections__' ,))
S'il vous plaît, ne l'utilisez pas si vous ne comprenez pas pourquoi vous en avez besoin. C'est magique pour des cas rarement extrêmes.
Assurez-vous que vous utilisez la dernière version !
pip install --upgrade fake-useragent
Ou si cela ne fonctionne pas, essayez d'installer la dernière version du package comme ceci ( 2.0.1
est un exemple, vérifiez quelle est la dernière version sur PyPi) :
pip install fake-useragent==2.0.1
Vérifiez la version via la console Python :
import fake_useragent
print ( fake_useragent . __version__ )
Et vous êtes toujours invités à publier des problèmes.
N'oubliez pas de mentionner la version que vous utilisez.
Les données de l'agent utilisateur que nous récupérons sur user-agents.net. Les données sont stockées au format JSONlines. Le fichier se trouve dans le répertoire : src/fake_useragent/data
.
Nous travaillons actuellement sur un nouveau script d'automatisation (voir numéro 333) pour récupérer les scripts d'agent utilisateur depuis user-agents.net et mettre à jour les agents utilisateurs de temps en temps.
Le fichier de données JSON fait partie du package Python, voir pyproject.toml. En savoir plus sur la prise en charge des fichiers de données.
Nous vous encourageons à utiliser l'environnement virtuel Python avant d'installer les packages Pip, comme ceci :
python -m virtualenv env
source env/bin/activate
pip install -e .
pip install -r requirements.txt
tox
Pour corriger les importations à l'aide de ruff :
pip install -r requirements.txt
ruff check --select= " I " --fix .
Corrigez les erreurs de formatage du code noir :
pip install -r requirements.txt
black .
Remarque : lors de la sortie de Ruff v1.0, nous nous dirigerons probablement entièrement vers ruff
au lieu du black
.
2.0.1
2.0.0 4 décembre 2024
"Google", "Chrome", "Firefox", "Edge", "Opera"," Safari", "Android", "Yandex Browser", "Samsung Internet", "Opera Mobile", "Mobile Safari", "Firefox Mobile", "Firefox iOS", "Chrome Mobile", "Chrome Mobile iOS", "Mobile Safari UI/WKWebView", "Edge Mobile", "DuckDuckGo Mobile", "MiuiBrowser", "Whale", "Twitter", "Facebook", "Amazon Silk"
"Windows", "Linux", "Ubuntu", "Chrome OS", "Mac OS X", "Android", "iOS"
"desktop", "mobile", "tablet"
1.5.1 16 mars 2024
1.5.0 8 mars 2024
1.4.0 24 novembre 2023
1.3.0 2 octobre 2023
ua.getRandom
, ua.getFirefox
, ua.getChrome
, ua.getSafari
. Et une méthode générique : ua.getBrowser(..)
(par exemple getBrowser('firefox')
)os
'windows' pour vérifier les valeurs win10
et win7
(auparavant, seules win10
étaient vérifiées), renvoyant ainsi plus d'UA.1.2.1 2 août 2023
min_percentage
1.2.0 2 août 2023
use_external_data=True
et verify_ssl
sont supprimés . Si vous utilisez ces paramètres, supprimez-les simplement dans votre code !1.1.3 20 mars 2023
1.1.2 8 février 2023
1.1.1 4 décembre 2022
1.1.0 26 novembre 2022
pkg_resource
comme mécanisme de secours pour tenter de récupérer le fichier de données JSON local1.0.1 10 novembre 2022
importlib-metadata
et importlib-resources
comme dépendancesfiles()
fonctionneimportlib_metadata
devrait désormais également fonctionner sur la version Python antérieure à 3.8MANIFEST.in
obsolète1.0.0 17 novembre 2022
myproject.toml
avec la prise en charge package-data
0.1.14 5 novembre 2022
pyproject.toml
+ vérification de la syntaxetox.ini
amélioré0.1.13 21 octobre 2022
browsers
, vous permettant de remplacer les noms de navigateur que vous souhaitez utiliserblack
en faveur de Flake0.1.12 31 mars 2022
0.1.11 4 octobre 2018
s3 + cloudfront
vers heroku.com
, car quelqu'un de Floride a fait environ 25 millions de demandes le mois dernier0.1.10 11 février 2018
cloudfront
des documents de correctifs mineurs0.1.9 11 février 2018
w3schools.com
renommé IE/Edge
en Edge/IE
heroku.com
vers s3 + cloudfront
0.1.8 2 novembre 2017
useragentstring.com
Can't connect to local MySQL server through socket
0.1.7 2 avril 2017
0.1.6 2 avril 2017
use_cache_server
n'affecte rienw3schools.com <https://www.w3schools.com/browsers/browsers_stats.asp>
_ déplacé vers https
verify_ssl
ajoutées, par défaut c'est True
(le contexte ssl urllib.urlopen
pour Python 2.7.9- et 3.4.3- n'est pas pris en charge)0.1.5 28 février 2017
ua.edge
à Internet ExplorerEdge
use_cache_server
ajoutéefake_useragent.settings.HTTP_TIMEOUT
à 5 secondes0.1.4 14 décembre 2016
fallback
, en cas de sources de données indisponiblesfake_useragent.FakeUserAgent
pour fake_useragent.UserAgent
fake_useragent.UserAgentError
pour fake_useragent.FakeUserAgentError
fake_useragent.settings.HTTP_TIMEOUT
réduit à 3 secondessafe_attrs
pour empêcher le remplacement par __getattr__
0.1.3 24 novembre 2016
fake_useragent.errors.FakeUserAgentError
dans le cas où il n'y a aucun moyen de télécharger des donnéesfake_useragent.errors.FakeUserAgentError
au lieu de None
en cas de navigateur inconnugevent.sleep
dans l'environnement corrigé gevent
lors de la tentative de téléchargement de donnéesXXX xxxxxxx xx, xxxx
Vous pouvez visiter la page des auteurs.