Falsificador de agente de usuario simple y actualizado con base de datos del mundo real.
desktop
, tablet
y/o mobile
)useragent
, percent
, type
, device_brand
, browser
, browser_version
, os
, os_version
y platform
pip install fake-useragent
O si tiene varias versiones de Python/pip instaladas, use pip3
:
pip3 install fake-useragent
Ejemplos de uso simples a continuación; consulte también los siguientes capítulos de este archivo Léame para usos más avanzados:
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
Funciones adicionales que fake-useragent ofrece ahora desde la versión 1.2.0.
Si desea especificar su propia lista de navegadores, puede hacerlo mediante el argumento browsers
(el valor predeterminado es: ["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"]
.
Este ejemplo solo devolverá agentes de usuario aleatorios de Edge y Chrome:
from fake_useragent import UserAgent
ua = UserAgent ( browsers = [ 'Edge' , 'Chrome' ])
ua . random
Nota: El agente de usuario falso conoce los navegadores: Chrome, Edge, Firefox, Safari, Opera, Android, Opera Mobile, Mobile Safari, Firefox Mobile, Firefox iOS, Chrome Mobile, Chrome Mobile iOS y más (consulte nuevamente la lista completa arriba).
Nota #2: ¡Desde fakeuser-agent v2.0.0 los nombres del navegador distinguen entre mayúsculas y minúsculas!
Si desea especificar sus propios sistemas operativos, puede hacerlo mediante el argumento os
(el valor predeterminado es: ["Windows", "Linux", "Ubuntu", "Chrome OS", "Mac OS X", "Android", "iOS"]
).
En este ejemplo, solo obtendrás agentes de usuario de Linux:
from fake_useragent import UserAgent
ua = UserAgent ( os = 'Linux' )
ua . random
Nota: Desde fakeuser-agent v2.0.0, los nombres del sistema operativo distinguen entre mayúsculas y minúsculas.
También puede especificar el tipo de plataformas que desea usar, puede hacerlo a través del argumento platforms
(el valor predeterminado es ["desktop", "mobile", "tablet"]
. Este ejemplo solo devolverá agentes de usuario aleatorios desde un dispositivo móvil dispositivo:
from fake_useragent import UserAgent
ua = UserAgent ( platforms = 'desktop' )
ua . random
Si desea devolver cadenas de agentes de usuario más recientes, puede jugar con el argumento min_version
(el valor predeterminado es: 0.0
, lo que significa que todos los agentes de usuario coincidirán).
En este ejemplo, solo obtienes agentes de usuario que tienen una versión mínima de 120.0:
from fake_useragent import UserAgent
ua = UserAgent ( min_version = 120.0 )
ua . random
Para compatibilidad con versiones anteriores, aún se puede especificar un porcentaje de uso mínimo con el argumento min_percentage
. Sin embargo, la lista actual de agentes de usuario no contiene esta estadística. Por lo tanto, todos los agentes de usuario coincidirán.
Pista: ¡Por supuesto que puedes combinar todos esos argumentos a tu gusto!
Desde la versión 1.3.0, ahora también le ofrecemos las siguientes propiedades "obtener" que devuelven el diccionario Python completo de la UA, en lugar de solo la cadena de agente de usuario:
Advertencia Los objetos JSON sin formato (en diccionarios de Python) se devuelven "tal cual". Es decir, ¡esta estructura de datos podría cambiar en el futuro!
Tenga en cuenta que es posible que estas propiedades "obtener" a continuación no devuelvan los mismos pares clave/valor en el futuro. Utilice
ua.random
o similar como se mencionó anteriormente, si desea utilizar una interfaz estable.
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' )
Puede anular la cadena de reserva utilizando el parámetro fallback
; en casos muy raros, algo falló:
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 intentas obtener un navegador desconocido:
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 necesita proteger algunos atributos para que no los anulen en UserAgent mediante el método __getattr__
use safe_attrs
puede pasar los nombres de los atributos. Al menos esto evitará que genere FakeUserAgentError cuando no se encuentre el atributo.
Por ejemplo, cuando utilices un agente de usuario falso con injections <https://github.com/tailhook/injections>
necesitas:
from fake_useragent import UserAgent
ua = UserAgent ( safe_attrs = ( '__injections__' ,))
Por favor, no lo utilice si no comprende por qué lo necesita. Esto es mágico para casos raramente extremos.
¡Asegúrate de utilizar la última versión!
pip install --upgrade fake-useragent
O si eso no funciona, intente instalar la última versión del paquete como esta ( 2.0.1
es un ejemplo, verifique cuál es la última versión en PyPi):
pip install fake-useragent==2.0.1
Verifique la versión a través de la consola Python:
import fake_useragent
print ( fake_useragent . __version__ )
Y siempre eres bienvenido a publicar problemas.
No olvide mencionar la versión que está utilizando.
Los datos del agente de usuario que recuperamos de user-agents.net. Los datos se almacenan en formato JSONlines. El archivo se encuentra en el directorio: src/fake_useragent/data
.
Actualmente estamos trabajando en un nuevo script de automatización (consulte el número 333) para recuperar scripts de agentes de usuario de user-agents.net y actualizar los agentes de usuario de vez en cuando.
El archivo JSON de datos es parte del paquete Python, consulte pyproject.toml. Lea más sobre la compatibilidad con archivos de datos.
Recomendamos utilizar el entorno virtual Python antes de instalar paquetes Pip, así:
python -m virtualenv env
source env/bin/activate
pip install -e .
pip install -r requirements.txt
tox
Para arreglar las importaciones usando ruff:
pip install -r requirements.txt
ruff check --select= " I " --fix .
Corregir errores de formato del código negro:
pip install -r requirements.txt
black .
Nota: Cuando se lance ruff v1.0, lo más probable es que avancemos completamente hacia ruff
en lugar de black
.
2.0.1
2.0.0 4 de diciembre de 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 de marzo de 2024
1.5.0 8 de marzo de 2024
1.4.0 24 de noviembre de 2023
1.3.0 2 de octubre de 2023
ua.getRandom
, ua.getFirefox
, ua.getChrome
, ua.getSafari
. Y un método genérico: ua.getBrowser(..)
(por ejemplo, getBrowser('firefox')
)os
'windows' para verificar los valores de win10
y win7
(anteriormente solo verificaba en win10
), devolviendo así más UA.1.2.1 2 de agosto de 2023
min_percentage
1.2.0 2 de agosto de 2023
use_external_data=True
y verify_ssl
. Si usa esos parámetros, ¡simplemente elimínelos en su código!1.1.3 20 de marzo de 2023
1.1.2 8 de febrero de 2023
1.1.1 4 de diciembre de 2022
1.1.0 26 de noviembre de 2022
pkg_resource
como mecanismo alternativo al intentar recuperar el archivo de datos JSON local1.0.1 10 de noviembre de 2022
importlib-metadata
e importlib-resources
como dependenciasfiles()
funcioneimportlib_metadata
ahora también debería funcionar en la versión de Python anterior a la 3.8MANIFEST.in
obsoleto1.0.0 17 de noviembre de 2022
myproject.toml
con soporte package-data
0.1.14 5 de noviembre de 2022
pyproject.toml
+ verificación de sintaxistox.ini
mejorado0.1.13 21 de octubre de 2022
browsers
, lo que le permitirá anular los nombres de los navegadores que desea usar.black
en favor de Flake0.1.12 31 de marzo de 2022
0.1.11 4 de octubre de 2018
s3 + cloudfront
a heroku.com
, porque alguien de Florida realizó ~25 millones de solicitudes el mes pasado.0.1.10 11 de febrero de 2018
cloudfront
de documentos de corrección menor0.1.9 11 de febrero de 2018
w3schools.com
renombrado IE/Edge
a Edge/IE
heroku.com
a s3 + cloudfront
0.1.8 2 de noviembre de 2017
useragentstring.com
Can't connect to local MySQL server through socket
0.1.7 2 de abril de 2017
0.1.6 2 de abril de 2017
use_cache_server
no afecta nadaw3schools.com <https://www.w3schools.com/browsers/browsers_stats.asp>
_ movido a https
verify_ssl
, de forma predeterminada es True
(el contexto ssl urllib.urlopen
para Python 2.7.9 y 3.4.3 no es compatible)0.1.5 28 de febrero de 2017
ua.edge
a Internet Explorer.Edge
use_cache_server
fake_useragent.settings.HTTP_TIMEOUT
a 5 segundos0.1.4 14 de diciembre de 2016
fallback
, en caso de fuentes de datos no disponibles.fake_useragent.FakeUserAgent
para fake_useragent.UserAgent
fake_useragent.UserAgentError
para fake_useragent.FakeUserAgentError
fake_useragent.settings.HTTP_TIMEOUT
a 3 segundos.safe_attrs
para evitar la anulación por __getattr__
0.1.3 24 de noviembre de 2016
fake_useragent.errors.FakeUserAgentError
en caso de que no haya forma de descargar datosfake_useragent.errors.FakeUserAgentError
en lugar de None
en caso de un navegador desconocidogevent.sleep
en el entorno parcheado gevent
al intentar descargar datos.XXX xxxxxxx xx, xxxx
Puedes visitar la página de los autores.