
OnionSearch é um script que coleta URLs em diferentes mecanismos de busca .onion.
👋 Olá! Para quaisquer consultas profissionais ou colaborações, entre em contato comigo pelo e-mail: [email protected]
📧 De preferência, use seu e-mail profissional para correspondência. Vamos manter isso curto e agradável, e tudo em inglês!
OnionSearch é um script Python3 que extrai URLs de diferentes mecanismos de busca ".onion".


pip3 install onionsearch
git clone https://github.com/megadose/OnionSearch.git
cd OnionSearch/
python3 setup.py install
Ajuda:
usage: onionsearch [-h] [--proxy PROXY] [--output OUTPUT]
[--continuous_write CONTINUOUS_WRITE] [--limit LIMIT]
[--engines [ENGINES [ENGINES ...]]]
[--exclude [EXCLUDE [EXCLUDE ...]]]
[--fields [FIELDS [FIELDS ...]]]
[--field_delimiter FIELD_DELIMITER] [--mp_units MP_UNITS]
search
positional arguments:
search The search string or phrase
optional arguments:
-h, --help show this help message and exit
--proxy PROXY Set Tor proxy (default: 127.0.0.1:9050)
--output OUTPUT Output File (default: output_$SEARCH_$DATE.txt), where $SEARCH is replaced by the first chars of the search string and $DATE is replaced by the datetime
--continuous_write CONTINUOUS_WRITE
Write progressively to output file (default: False)
--limit LIMIT Set a max number of pages per engine to load
--engines [ENGINES [ENGINES ...]]
Engines to request (default: full list)
--exclude [EXCLUDE [EXCLUDE ...]]
Engines to exclude (default: none)
--fields [FIELDS [FIELDS ...]]
Fields to output to csv file (default: engine name link), available fields are shown below
--field_delimiter FIELD_DELIMITER
Delimiter for the CSV fields
--mp_units MP_UNITS Number of processing units (default: core number minus 1)
[...]
Por padrão, o script será executado com o parâmetro mp_units = cpu_count() - 1. Isso significa que se você tiver uma máquina com 4 núcleos, ele executará 3 funções de scraping em paralelo. Você pode forçar mp_units para qualquer valor, mas é recomendado deixar o padrão. Você pode querer defini-lo como 1 para executar todas as requisições sequencialmente (desabilitando o recurso de multiprocessamento).
Observe que a escrita contínua em arquivo csv não foi exaustivamente testada com o recurso de multiprocessamento e, portanto, pode não funcionar como esperado.
Observe também que as barras de progresso podem não ser exibidas corretamente quando mp_units é maior que 1. Isso não afeta os resultados, portanto, não se preocupe.
Para consultar todos os mecanismos pela palavra "computer":
onionsearch "computer"
Para consultar todos os mecanismos exceto "Ahmia" e "Candle" pela palavra "computer":
onionsearch "computer" --exclude ahmia candle
Para consultar apenas "Tor66", "DeepLink" e "Phobos" pela palavra "computer":
onionsearch "computer" --engines tor66 deeplink phobos
O mesmo que anteriormente, mas limitando a 3 o número de páginas por mecanismo:
onionsearch "computer" --engines tor66 deeplink phobos --limit 3
Por favor, note que a lista de mecanismos suportados (e suas chaves) é fornecida na ajuda do script (-h).
Por padrão, o arquivo é escrito ao final do processo. O arquivo será formatado em csv, contendo as seguintes colunas:
"engine","name of the link","url"
Você pode personalizar o que será gravado no arquivo de saída usando os parâmetros --fields e --field_delimiter.
--fields permite adicionar, remover, reordenar os campos de saída. O modo padrão é mostrado abaixo. Em vez disso, você pode, por exemplo, escolher gerar:
"engine","name of the link","url","domain"
definindo --fields engine name link domain.
Ou ainda, você pode optar por gerar:
"engine","domain"
definindo --fields engine domain.
Estes são exemplos, mas há muitas possibilidades.
Finalmente, você também pode modificar o delimitador CSV (vírgula por padrão), por exemplo: --field_delimiter ";".
O nome do arquivo será definido por padrão como output_$DATE_$SEARCH.txt, onde $DATE representa a data/hora atual e $SEARCH os primeiros caracteres da string de busca.
Você pode modificar este nome usando --output ao executar o script, por exemplo:
onionsearch "computer" --output "\$DATE.csv"
onionsearch "computer" --output output.txt
onionsearch "computer" --output "\$DATE_\$SEARCH.csv"
...
(Observe que pode ser necessário escapar o caractere cifrão.)
No arquivo csv gerado, as strings de nome e url são sanitizadas o máximo possível, mas ainda podem haver alguns problemas...
Você pode optar por escrever progressivamente na saída (em vez de tudo no final, o que evitaria perder os resultados se algo der errado). Para isso, você deve usar --continuous_write True, exatamente assim:
onionsearch "computer" --continuous_write True
Você pode então usar o comando Unix tail -f (tail follow) para monitorar ativamente os resultados do scraping.