
Biblioteca Python para consultar com precisão o uso de nomes de usuário e e-mails em plataformas online.
socialscan oferece verificações precisas e rápidas para uso de endereços de e-mail e nomes de utilizador em plataformas online.
Dado um endereço de e-mail ou nome de utilizador, o socialscan retorna se está disponível, ocupado ou inválido nas plataformas online.
Funcionalidades que diferenciam o socialscan de ferramentas semelhantes (ex.: knowem.com, Namechk e Sherlock):
100% de precisão: o método de consulta do socialscan elimina os falsos positivos e negativos que ocorrem frequentemente em ferramentas semelhantes, garantindo que os resultados são sempre precisos.
Velocidade: o socialscan usa asyncio juntamente com aiohttp para realizar todas as consultas em simultâneo, proporcionando pesquisas rápidas mesmo com consultas em massa envolvendo centenas de nomes de utilizador e endereços de e-mail. Num computador de teste com especificações médias e velocidade de Internet, 100 consultas foram executadas em ~4 segundos.
Biblioteca / CLI: o socialscan pode ser executado através de uma CLI ou importado como uma biblioteca Python para ser usado com código existente.
Suporte a e-mail: o socialscan suporta consultas tanto para endereços de e-mail quanto para nomes de utilizador.
As seguintes plataformas são atualmente suportadas:

Outras ferramentas semelhantes verificam a disponibilidade de nomes de utilizador ao solicitar a página de perfil do nome de utilizador em questão e, com base em informações como o código de status HTTP ou o texto de erro na página solicitada, determinam se um nome de utilizador já está ocupado. Esta é uma abordagem ingénua que falha nos seguintes casos:
Palavras-chave reservadas: A maioria das plataformas tem um conjunto de palavras-chave que não permitem ser usadas em nomes de utilizador
(Um teste simples: tente verificar palavras reservadas como 'admin' ou 'home' ou 'root' e veja se outros serviços as marcam como disponíveis)
Contas eliminadas/suspensas: Nomes de utilizador de contas eliminadas/suspensas tendem a estar indisponíveis, mesmo que as páginas de perfil possam não existir
Portanto, estas ferramentas tendem a gerar falsos positivos e negativos. Este método de verificação também depende de as plataformas terem páginas de perfil baseadas na web e não pode ser estendido a endereços de e-mail.
O socialscan visa colmatar estas lacunas ao consultar diretamente os servidores de registo das plataformas, obtendo os tokens CSRF, cabeçalhos e cookies apropriados.
> pip install socialscan
> git clone https://github.com/iojw/socialscan.git
> cd socialscan
> pip install .
usage: socialscan [list of usernames/email addresses to check]
optional arguments:
-h, --help show this help message and exit
--platforms [platform [platform ...]], -p [platform [platform ...]]
list of platforms to query (default: all platforms)
--view-by {platform,query}
view results sorted by platform or by query (default:
query)
--available-only, -a only print usernames/email addresses that are
available and not in use
--cache-tokens, -c cache tokens for platforms requiring more than one
HTTP request (Snapchat, GitHub, Instagram. Lastfm &
Tumblr), reducing total number of requests sent
--input input.txt, -i input.txt
file containg list of queries to execute
--proxy-list proxy_list.txt
file containing list of HTTP proxy servers to execute
queries with
--verbose, -v show query responses as they are received
--show-urls display profile URLs for usernames on supported platforms
(profiles may not exist if usernames are reserved or belong to deleted/banned accounts)
--json json.txt output results in JSON format to the specified file
--version show program's version number and exit
O socialscan também pode ser importado para código existente e usado como biblioteca.
A v1.0.0 introduz o método assíncrono execute_queries e o wrapper síncrono correspondente sync_execute_queries que aceita uma lista de consultas e uma lista opcional de plataformas e proxies, executando todas as consultas em simultâneo. O método retorna então uma lista de resultados na mesma ordem.
from socialscan.util import Platforms, sync_execute_queries
queries = ["username1", "[email protected]", "[email protected]"]
platforms = [Platforms.GITHUB, Platforms.LASTFM]
results = sync_execute_queries(queries, platforms)
for result in results:
print(f"{result.query} on {result.platform}: {result.message} (Success: {result.success}, Valid: {result.valid}, Available: {result.available})")
Output:
username1 on GitHub: Username is already taken (Success: True, Valid: True, Available: False)
username1 on Lastfm: Sorry, this username isn't available. (Success: True, Valid: True, Available: False)
[email protected] on GitHub: Available (Success: True, Valid: True, Available: True)
[email protected] on Lastfm: Sorry, that email address is already registered to another account. (Success: True, Valid: True, Available: False)
[email protected] on GitHub: Available (Success: True, Valid: True, Available: True)
[email protected] on Lastfm: Looking good! (Success: True, Valid: True, Available: True)
Para consultas em massa com a opção --input, coloque um nome de utilizador/e-mail por linha no ficheiro .txt:
username1
[email protected]
username3
Se achar esta ferramenta útil e quiser apoiar o seu desenvolvimento contínuo, pode doar aqui. Obrigado pelo seu apoio.
BTC: bc1qwrnukyc6xh9aygu5ps2geh8stmvagsj5u4v7j6
ETH: 0x45a0F91666391078eA521A6123559E49DAb1275f
Erros, sugestões ou quer adicionar um site? Submeta um issue.
PRs são sempre bem-vindos 🙂
Por favor, certifique-se de que o código está formatado com black usando a configuração em pyproject.toml antes de submeter um PR.
MPL 2.0
| Nome de utilizador |
|---|
| ✔️ | ✔️ | |
| ✔️ | ✔️ | |
| GitHub | ✔️ | ✔️ |
| Tumblr | ✔️ | ✔️ |
| Lastfm | ✔️ | ✔️ |
| Snapchat | ✔️ | |
| GitLab | ✔️ | |
| ✔️ | ||
| Yahoo | ✔️ | |
| ✔️ | ||
| Firefox | ✔️ |