Faker de agente de usuário simples e atualizado com banco de dados do mundo real.
desktop
, tablet
e/ou UAs mobile
)useragent
, percent
, type
, device_brand
, browser
, browser_version
, os
, os_version
e platform
pip install fake-useragent
Ou se você tiver várias versões do Python/pip instaladas, use pip3
:
pip3 install fake-useragent
Exemplos de uso simples abaixo, consulte também os próximos capítulos deste leia-me para usos mais avançados:
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
Recursos adicionais que o fake-useragent agora oferece desde a v1.2.0.
Se quiser especificar sua própria lista de navegadores, você pode fazer isso através do argumento browsers
(o padrão é: ["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 exemplo retornará apenas user-agents aleatórios do Edge e do Chrome:
from fake_useragent import UserAgent
ua = UserAgent ( browsers = [ 'Edge' , 'Chrome' ])
ua . random
Nota: Fakeuser-agent sabe sobre navegadores: Chrome, Edge, Firefox, Safari, Opera, Android, Opera Mobile, Mobile Safari, Firefox Mobile, Firefox iOS, Chrome Mobile, Chrome Mobile iOS e mais (veja novamente a lista completa acima).
Nota #2: Desde o fakeuser-agent v2.0.0, os nomes dos navegadores diferenciam maiúsculas de minúsculas!
Se quiser especificar seus próprios sistemas operacionais, você pode fazer isso através do argumento os
(o padrão é: ["Windows", "Linux", "Ubuntu", "Chrome OS", "Mac OS X", "Android", "iOS"]
).
Neste exemplo, você receberá de volta apenas os user-agents do Linux:
from fake_useragent import UserAgent
ua = UserAgent ( os = 'Linux' )
ua . random
Nota: Desde o fakeuser-agent v2.0.0, os nomes dos sistemas operacionais diferenciam maiúsculas de minúsculas!
Você também pode especificar o tipo de plataformas que deseja usar, você pode fazer isso através do argumento platforms
(o padrão é ["desktop", "mobile", "tablet"]
. Este exemplo retornará apenas agentes de usuário aleatórios de um dispositivo móvel dispositivo:
from fake_useragent import UserAgent
ua = UserAgent ( platforms = 'desktop' )
ua . random
Se quiser retornar strings de agente de usuário mais recentes, você pode brincar com o argumento min_version
(o padrão é: 0.0
, o que significa que todos os agentes de usuário corresponderão).
Neste exemplo você obtém apenas agentes de usuário que possuem uma versão mínima de 120.0:
from fake_useragent import UserAgent
ua = UserAgent ( min_version = 120.0 )
ua . random
Para compatibilidade com versões anteriores, uma porcentagem mínima de uso ainda pode ser especificada com o argumento min_percentage
. No entanto, a lista atual de agentes de usuário não contém esta estatística. Portanto, todos os agentes de usuário serão correspondentes.
Dica: Claro que você pode combinar todos esses argumentos ao seu gosto!
Desde a versão 1.3.0, agora também oferecemos as seguintes propriedades "get" que retornam todo o dicionário Python do UA, em vez de apenas a string do agente do usuário:
Aviso Objetos JSON brutos (em dicionários Python) são retornados "como estão". Ou seja, esta estrutura de dados pode mudar no futuro!
Esteja ciente de que essas propriedades "get" abaixo podem não retornar os mesmos pares chave/valor no futuro. Use
ua.random
ou similar como mencionado acima, se quiser usar uma interface estável.
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' )
Você pode substituir a string de fallback usando o parâmetro fallback
; em casos muito raros, algo falhou:
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'
Se você tentar obter um navegador desconhecido:
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
Se você precisar proteger alguns atributos de substituí-los no UserAgent pelo método __getattr__
use safe_attrs
você pode passar os nomes dos atributos. Pelo menos isso impedirá que você gere FakeUserAgentError quando o atributo não for encontrado.
Por exemplo, ao usar um agente de usuário falso com injections <https://github.com/tailhook/injections>
você precisa:
from fake_useragent import UserAgent
ua = UserAgent ( safe_attrs = ( '__injections__' ,))
Por favor, não use se não entender por que precisa disso. Isso é mágico para casos raramente extremos.
Certifique-se de usar a versão mais recente!
pip install --upgrade fake-useragent
Ou se isso não funcionar, tente instalar a versão mais recente do pacote como esta ( 2.0.1
é um exemplo, verifique qual é a versão mais recente no PyPi):
pip install fake-useragent==2.0.1
Verifique a versão através do console Python:
import fake_useragent
print ( fake_useragent . __version__ )
E você é sempre bem-vindo para postar problemas.
Não se esqueça de mencionar a versão que você está usando.
Os dados do agente do usuário que recuperamos de user-agents.net. Os dados são armazenados no formato JSONlines. O arquivo está localizado no diretório: src/fake_useragent/data
.
Atualmente, estamos trabalhando em um novo script de automação (veja a edição nº 333) para buscar scripts de agente de usuário em user-agents.net e atualizar os agentes de usuário de vez em quando.
O arquivo JSON de dados faz parte do pacote Python, consulte pyproject.toml. Leia mais sobre o suporte a arquivos de dados.
Incentivamos o uso do ambiente virtual Python antes de instalar pacotes Pip, assim:
python -m virtualenv env
source env/bin/activate
pip install -e .
pip install -r requirements.txt
tox
Para corrigir importações usando ruff:
pip install -r requirements.txt
ruff check --select= " I " --fix .
Corrija erros de formatação de código preto:
pip install -r requirements.txt
black .
Observação: quando o ruff v1.0 for lançado, provavelmente avançaremos totalmente para ruff
em vez do black
.
2.0.1
2.0.0 4 de dezembro 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 março de 2024
1.5.0 8 de março de 2024
1.4.0 24 de novembro de 2023
1.3.0 2 de outubro de 2023
ua.getRandom
, ua.getFirefox
, ua.getChrome
, ua.getSafari
. E um método genérico: ua.getBrowser(..)
(por exemplo, getBrowser('firefox')
)os
'windows' para verificar os valores win10
e win7
(anteriormente verificando apenas win10
), retornando assim mais UAs1.2.1 2 de agosto de 2023
min_percentage
1.2.0 2 de agosto de 2023
use_external_data=True
e verify_ssl
foram removidos . Se você usar esses parâmetros, basta removê-los do seu código!1.1.3 20 de março de 2023
1.1.2 8 de fevereiro de 2023
1.1.1 4 de dezembro de 2022
1.1.0 26 de novembro de 2022
pkg_resource
como mecanismo de fallback ao tentar recuperar o arquivo de dados JSON local1.0.1 10 de novembro de 2022
importlib-metadata
e importlib-resources
como dependênciasfiles()
funcioneimportlib_metadata
agora também deve funcionar na versão Python anterior à 3.8MANIFEST.in
obsoleto1.0.0 17 de novembro de 2022
myproject.toml
com suporte package-data
0.1.14 5 de novembro de 2022
pyproject.toml
+ verificação de sintaxetox.ini
aprimorado0.1.13 21 de outubro de 2022
browsers
, permitindo substituir os nomes dos navegadores que deseja usarblack
em favor do Flake0.1.12 31 de março de 2022
0.1.11 4 de outubro de 2018
s3 + cloudfront
para heroku.com
, porque alguém da Flórida fez cerca de 25 milhões de solicitações no mês passado0.1.10 11 de fevereiro de 2018
cloudfront
de documentos de correção secundária0.1.9 11 de fevereiro de 2018
w3schools.com
renomeado IE/Edge
para Edge/IE
heroku.com
para s3 + cloudfront
0.1.8 2 de novembro 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
não afetou nadaw3schools.com <https://www.w3schools.com/browsers/browsers_stats.asp>
_ movido para https
verify_ssl
adicionadas, por padrão é True
(o contexto urllib.urlopen
SSL para Python 2.7.9- e 3.4.3- não é suportado)0.1.5 28 de fevereiro de 2017
ua.edge
ao Internet ExplorerEdge
use_cache_server
adicionadafake_useragent.settings.HTTP_TIMEOUT
para 5 segundos0.1.4 14 de dezembro de 2016
fallback
, no caso de fontes de dados indisponíveisfake_useragent.FakeUserAgent
para fake_useragent.UserAgent
fake_useragent.UserAgentError
para fake_useragent.FakeUserAgentError
fake_useragent.settings.HTTP_TIMEOUT
reduzido para 3 segundossafe_attrs
para evitar substituição por __getattr__
0.1.3 24 de novembro de 2016
fake_useragent.errors.FakeUserAgentError
caso não haja maneira de baixar dadosfake_useragent.errors.FakeUserAgentError
em vez de None
no caso de navegador desconhecidogevent.sleep
no ambiente com patch gevent
ao tentar baixar dadosXXX xxxxxxx xx, xxxx
Você pode visitar a página dos autores.