
Una herramienta avanzada de scraping de Twitter y OSINT escrita en Python que no usa la API de Twitter, permitiéndote extraer los seguidores, seguidos, Tweets y más de un usuario mientras evade la mayoría de las limitaciones de la API.

Sin autenticación. Sin API. Sin límites.
Twint es una herramienta avanzada de scraping de Twitter escrita en Python que permite extraer Tweets de perfiles de Twitter sin usar la API de Twitter.
Twint utiliza los operadores de búsqueda de Twitter para permitirte extraer Tweets de usuarios específicos, extraer Tweets relacionados con ciertos temas, hashtags y tendencias, o filtrar información sensible de Tweets como correos electrónicos y números de teléfono. Encuentro esto muy útil, y también puedes ser muy creativo con ello.
Twint también realiza consultas especiales a Twitter que te permiten extraer los seguidores de un usuario de Twitter, los Tweets que un usuario ha marcado como favoritos y a quién sigue sin ninguna autenticación, API, Selenium o emulación de navegador.
Algunos de los beneficios de usar Twint frente a la API de Twitter:
Twitter limita los desplazamientos al navegar por la línea de tiempo del usuario. Esto significa que con .Profile o .Favorites podrás obtener alrededor de 3200 tweets.
Git:
git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt
Pip:
pip3 install twint
o
pip3 install --user --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint
Pipenv:
pipenv install git+https://github.com/twintproject/twint.git#egg=twint
Añadido: Dockerfile
Noté que mucha gente tiene problemas para instalar (incluyéndome a mí). Usa el Dockerfile temporalmente mientras investigo el problema.
Algunos ejemplos sencillos para ayudarte a entender lo básico:
twint -u nombredeusuario - Extrae todos los Tweets de un usuario (no incluye retweets pero sí incluye respuestas).twint -u nombredeusuario -s piña - Extrae todos los Tweets de la línea de tiempo del usuario que contengan piña.twint -s piña - Recoge todos los Tweets que contengan piña de los Tweets de todos.twint -u nombredeusuario --year 2014 - Recoge Tweets que fueron twitteados antes de 2014.twint -u nombredeusuario --since "2015-12-20 20:30:15" - Recoge Tweets que fueron twitteados desde el 2015-12-20 20:30:15.twint -u nombredeusuario --since 2015-12-20 - Recoge Tweets que fueron twitteados desde el 2015-12-20 00:00:00.twint -u nombredeusuario -o archivo.txt - Extrae Tweets y guárdalos en archivo.txt.twint -u nombredeusuario -o archivo.csv --csv - Extrae Tweets y guárdalos como archivo csv.twint -u nombredeusuario --email --phone - Muestra Tweets que puedan contener números de teléfono o direcciones de correo electrónico.Hay más detalles sobre los comandos y opciones en la wiki
Twint ahora se puede usar como módulo y admite formato personalizado. Más detalles se encuentran en la wiki
import twint
# Configurar
c = twint.Config()
c.Username = "realDonaldTrump"
c.Search = "great"
# Ejecutar
twint.run.Search(c)
Salida
955511208597184512 2018-01-22 18:43:19 GMT <now> pineapples are the best fruit
import twint
c = twint.Config()
c.Username = "noneprivacy"
c.Custom["tweet"] = ["id"]
c.Custom["user"] = ["bio"]
c.Limit = 10
c.Store_csv = True
c.Output = "none"
twint.run.Search(c)
Los detalles sobre cómo configurar Elasticsearch con Twint se encuentran en la wiki.

Los detalles del Gráfico también se encuentran en la wiki.
Estamos desarrollando una aplicación de escritorio de Twint.

Intenté extraer tweets de un usuario, sé que existen pero no los obtengo
Twitter puede ocultar cuentas (shadow-ban), lo que significa que sus tweets no estarán disponibles mediante la búsqueda. Para solucionarlo, pasa --profile-full si usas Twint mediante la CLI, o si usas Twint como módulo, añade config.Profile_full = True. Ten en cuenta que este proceso será bastante lento.
Para obtener solo los nombres de usuario de seguidores/siguiendo
twint -u nombredeusuario --followers
twint -u nombredeusuario --following
Para obtener información del usuario de seguidores/usuarios seguidos
twint -u nombredeusuario --followers --user-full
twint -u nombredeusuario --following --user-full
Para obtener solo la información del usuario
twint -u nombredeusuario --user-full
Para obtener información de usuarios de una lista de usuarios
twint --userlist listadeentrada --user-full
Para obtener 100 tweets en inglés y traducirlos a italiano
twint -u noneprivacy --csv --output none.csv --lang en --translate --translate-dest it --limit 100
o
import twint
c = twint.Config()
c.Username = "noneprivacy"
c.Limit = 100
c.Store_csv = True
c.Output = "none.csv"
c.Lang = "en"
c.Translate = True
c.TranslateDest = "it"
twint.run.Search(c)
Notas:
Si tienes alguna pregunta, quieres unirte a discusiones o necesitas ayuda adicional, eres bienvenido a unirte a nuestro canal dedicado a Twint en OSINT team
twint -s "Donald Trump" --verified - Muestra Tweets de usuarios verificados que twittearon sobre Donald Trump.twint -g="48.880048,2.385939,1km" -o archivo.csv --csv - Extrae Tweets en un radio de 1 km alrededor de un lugar en París y expórtalos a un archivo csv.twint -u nombredeusuario -es localhost:9200 - Envía los Tweets a Elasticsearchtwint -u nombredeusuario -o archivo.json --json - Extrae Tweets y guárdalos como archivo json.twint -u nombredeusuario --database tweets.db - Guarda Tweets en una base de datos SQLite.twint -u nombredeusuario --followers - Extrae los seguidores de un usuario de Twitter.twint -u nombredeusuario --following - Extrae a quién sigue un usuario de Twitter.twint -u nombredeusuario --favorites - Recoge todos los Tweets que un usuario ha marcado como favoritos (obtiene ~3200 tweets).twint -u nombredeusuario --following --user-full - Recoge información completa del usuario a quien sigue una persona.twint -u nombredeusuario --timeline - Usa un método eficaz para obtener Tweets del perfil de un usuario (obtiene ~3200 Tweets, incluyendo retweets y respuestas).twint -u nombredeusuario --retweets - Usa un método rápido para obtener los últimos 900 Tweets (que incluye retweets) del perfil de un usuario.twint -u nombredeusuario --resume resume_file.txt - Reanuda una búsqueda desde el último scroll-id guardado.