inteligencia cibernetica
misiektoja/instagram_monitor
Pastas e arquivos
Nome | ||
---|---|---|
Ăltimo commit3ae50a6 ¡ HistĂłria | ||
Navegação de arquivos do repositório
instagram_monitor Ê uma ferramenta OSINT escrita em Python que permite o monitoramento em tempo real das atividades dos usuårios do Instagram e mudanças de perfil.
- Rastreamento em tempo real das atividades dos usuårios do Instagram e alteraçþes de perfil:
- novas postagens e histĂłrias
- mudou seguidores, seguidores, biografia
- fotos de perfil alteradas
- Download anĂ´nimo de imagens e vĂdeos de histĂłrias de usuĂĄrios; sim, o usuĂĄrio nĂŁo saberĂĄ que vocĂŞ assistiu Ă s histĂłrias deles đ
- Download de imagens e vĂdeos de postagens do usuĂĄrio
- Notificaçþes por e-mail para diferentes eventos (novas postagens e histórias, alteração de seguidores, seguidores, biografia, alteração de fotos de perfil, erros)
- Anexar fotos de perfil alteradas e imagens de histórias/postagens diretamente em notificaçþes por e-mail
- Exibindo a foto do perfil e imagens de histĂłrias/postagens diretamente no seu terminal (se vocĂŞ tiver o imgcat instalado)
- Salvando todas as atividades do usuårio e alteraçþes de perfil com carimbos de data/hora no arquivo CSV
- Suporte para perfis pĂşblicos e privados
- Dois modos de operação: com ou sem conta Instagram logada
- Diferentes mecanismos para evitar captcha e detecção de ferramentas automatizadas
- Possibilidade de controlar a cópia em execução do script atravÊs de sinais
As notas de lançamento podem ser encontradas aqui
NĂŁo sou desenvolvedor, projeto feito como hobby. O cĂłdigo ĂŠ feio e como estĂĄ, mas funciona (pelo menos para mim) ;-)
A ferramenta requer Python 3.8 ou superior.
Ele usa a biblioteca instaloader , tambÊm requer solicitaçþes, python-dateutil, pytz e tzlocal.
Foi testado com sucesso em:
- macOS (Ventura e Sonoma)
- Linux:
- Raspberry Pi Bullseye e leitor ĂĄvido
- Ubuntu 24
- KaliLinux 2024
- Janelas (10 e 11)
Deve funcionar tambĂŠm em outras versĂľes do macOS, Linux, Unix e Windows.
Instale os pacotes Python necessĂĄrios:
python3 -m pip install requests python-dateutil pytz tzlocal instaloader
Ou em requisitos.txt:
pip3 install -r requirements.txt
Copie o arquivo instagram_monitor.py para o local desejado.
VocĂŞ pode querer adicionar direitos executĂĄveis ââse estiver no Linux/Unix/macOS:
chmod a+x instagram_monitor.py
Edite o arquivo instagram_monitor.py e altere quaisquer variĂĄveis ââde configuração desejadas na SEĂĂO DE CONFIGURAĂĂO marcada (todos os parâmetros tĂŞm descrição detalhada nos comentĂĄrios).
O primeiro modo de operação da ferramenta pressupþe que você não faça login com sua conta do Instagram para monitorar outros usuårios.
Desta forma você ainda pode monitorar atividades båsicas do usuårio como novas postagens, histórias, alteração de biografia e tambÊm alteração do número de seguidores e seguidores, mas sem informaçþes quais seguidores/seguidores foram adicionados ou removidos. Você tambÊm não poderå obter informaçþes mais detalhadas sobre novas postagens e histórias.
Este modo Ê fåcil de usar, não requer nenhum preparo e Ê resistente aos mecanismos anti-captcha e de detecção automatizada de ferramentas do Instagram.
O segundo modo de operação da ferramenta pressupþe que você use a conta do Instagram para realizar o login da sessão na ferramenta para monitorar outros usuårios.
Dessa forma, você tambÊm pode obter informaçþes sobre seguidores/seguidores adicionados/removidos e informaçþes mais detalhadas sobre novas postagens e histórias.
Sugiro criar uma nova conta para usar a ferramenta, pois hĂĄ um pequeno risco de a conta ser banida. No entanto, uso poucas contas hĂĄ mais de um ano com esta ferramenta e todas as contas ainda estĂŁo ativas, mas o Instagram pode apresentar alguns avisos ocasionalmente sobre atividades suspeitas detectadas.
Você pode definir o nome de usuårio e a senha diretamente no arquivo instagram_monitor.py (ou atravÊs dos parâmetros -u e -p ), porÊm isso significa que o procedimento de login da sessão Ê realizado toda vez que a ferramenta Ê executada. à altamente recomendåvel fazer login uma vez e salvar as informaçþes da sessão usando a ferramenta instaloader .
Depois de instalar o pacote instaloader pip, o binĂĄrio necessĂĄrio deverĂĄ estar disponĂvel e vocĂŞ poderĂĄ fazer login como no exemplo abaixo (usuĂĄrio mon_account ):
instaloader -l mon_account
Ele pedirå sua senha e salvarå a sessão. No entanto, este mÊtodo apresenta um problema que depois de algum tempo o Instagram provavelmente reportarå a detecção de uma ferramenta automatizada, especialmente no caso de mudanças frequentes de seguidores/seguidores dos usuårios monitorados.
Para superar isso, sugere-se usar a forma mais recomendada - usando o cookie de sessĂŁo do seu navegador.
Use o navegador Firefox, faça login na conta do Instagram que deseja usar para monitorar outros usuårios e, em seguida, use a ferramenta instaloader_import_firefox_session.py para importar a sessão do cookies.sqlite do Firefox para o instaloader (talvez seja necessårio ajustar o caminho do seu perfil do Firefox neste roteiro).
Este mĂŠtodo tem a vantagem de que se vocĂŞ realizar algumas atividades com esta conta no navegador Firefox a cada poucos dias (como rolar o feed, curtir algumas postagens), isso contarĂĄ como atividade "boa", o que aumentarĂĄ a reputação das açþes da ferramenta. Ăs vezes, vocĂŞ ainda pode ver alguns avisos no navegador Firefox onde vocĂŞ precisa clicar no botĂŁo Ignorar, mas nĂŁo deve ser com muita frequĂŞncia.
A ferramenta tentarĂĄ detectar automaticamente seu fuso horĂĄrio local para poder converter os carimbos de data e hora do Instagram para o seu horĂĄrio.
Caso vocĂŞ queira especificar seu fuso horĂĄrio manualmente, altere a variĂĄvel LOCAL_TIMEZONE de 'Auto' para um local especĂfico, por exemplo
LOCAL_TIMEZONE='Europe/Warsaw'
Nesse caso, nĂŁo ĂŠ necessĂĄrio instalar o mĂłdulo pip tzlocal .
Se quiser usar a funcionalidade de notificaçþes por e-mail, você precisa alterar as configuraçþes de SMTP (host, porta, usuårio, senha, remetente, destinatårio) no arquivo instagram_monitor.py . Se você deixar as configuraçþes padrão, nenhuma notificação serå enviada.
Você pode verificar se suas configuraçþes de SMTP estão corretas usando o parâmetro -z (a ferramenta tentarå enviar uma notificação por e-mail de teste):
./instagram_monitor.py -z
Todas as outras variĂĄveis ââpodem ser deixadas em seus padrĂľes, mas sinta-se Ă vontade para experimentar.
Para obter a lista de todos os parâmetros suportados:
./instagram_monitor.py -h
ou
python3 ./instagram_monitor.py -h
Para monitorar a atividade especĂfica do usuĂĄrio no modo 1 (sem realizar login na sessĂŁo), basta digitar o nome de usuĂĄrio do Instagram como parâmetro ( misiek_to_ja no exemplo abaixo):
./instagram_monitor.py misiek_to_ja
Para monitorar a atividade especĂfica do usuĂĄrio no modo 2 (com login de sessĂŁo), vocĂŞ tambĂŠm precisa especificar o nome da sua conta do Instagram ( -u ) que vocĂŞ usou na ferramenta instaloader ( mon_account no exemplo abaixo):
./instagram_monitor.py -u mon_account misiek_to_ja
A ferramenta serĂĄ executada infinitamente e monitorarĂĄ o usuĂĄrio atĂŠ que o script seja interrompido (Ctrl+C) ou eliminado de outra forma.
VocĂŞ pode monitorar vĂĄrios usuĂĄrios do Instagram gerando vĂĄrias cĂłpias do script.
Sugere-se usar algo como tmux ou screen para que o script seja executado apĂłs vocĂŞ sair do servidor (a menos que vocĂŞ o esteja executando em sua ĂĄrea de trabalho).
A ferramenta salva automaticamente sua saĂda no arquivo instagram_monitor_username.log (pode ser alterado nas configuraçþes atravĂŠs da variĂĄvel INSTA_LOGFILE ou desabilitado completamente com o parâmetro -d ).
A ferramenta no modo 2 (com login de sessĂŁo) tambĂŠm salva a lista de seguidores e seguidores nestes arquivos:
- instagram_username_followings.json
- instagram_username_followers.json
Graças a isso, não precisamos buscå-lo novamente sempre que a ferramenta for reiniciada e tambÊm podemos detectar alteraçþes desde a última utilização da ferramenta.
A ferramenta tambĂŠm salva a foto do perfil do usuĂĄrio em arquivos instagram_{username}_profile_pic*.jpeg .
Ele tambĂŠm salva imagens e vĂdeos de postagens baixadas em:
- instagram_{nome de usuĂĄrio}_post_YYYYmmdd_HHMMSS.jpeg
- instagram_{nome de usuĂĄrio}_post_YYYYmmdd_HHMMSS.mp4
E baixei imagens e vĂdeos de histĂłrias para:
- instagram_{nome de usuĂĄrio}_story_YYYYmmdd_HHMMSS.jpeg
- instagram_{nome de usuĂĄrio}_story_YYYYmmdd_HHMMSS.mp4
Se você deseja receber notificaçþes por e-mail para eventos diferentes (novas postagens e histórias, seguidores alterados, biografia, imagem de perfil alterada), use o parâmetro -s (funciona para ambos os modos):
./instagram_monitor.py misiek_to_ja -s
Não inclui informaçþes sobre seguidores alterados. Para isso use o parâmetro -m :
./instagram_monitor.py misiek_to_ja -m
Certifique-se de ter definido suas configuraçþes de SMTP anteriormente (consulte Configuraçþes de SMTP ).
Exemplo de e-mail:
Se você deseja salvar todas as atividades do usuårio do Instagram e alteraçþes de perfil no arquivo CSV, use o parâmetro -b com o nome do arquivo (ele serå criado automaticamente caso não exista):
./instagram_monitor.py misiek_to_ja -b instagram_misiek_to_ja.csv
A ferramenta possui funcionalidade para detectar fotos de perfil alteradas. As informaçþes adequadas estarĂŁo visĂveis no console (e notificaçþes por e-mail quando o parâmetro -s estiver habilitado). Por padrĂŁo, esse recurso estĂĄ habilitado, mas vocĂŞ pode desativĂĄ-lo definindo a variĂĄvel DETECT_CHANGED_PROFILE_PIC como False ou habilitando o parâmetro -k / --do_not_detect_changed_profile_pic .
Como o URL da imagem do perfil do usuårio do Instagram parece mudar de tempos em tempos, a ferramenta detecta a alteração da imagem do perfil fazendo uma comparação binåria de arquivos JPEG salvos. Inicialmente ele salva a foto do perfil no arquivo instagram_{username}_profile_pic.jpeg após a ferramenta ser iniciada, então a cada verificação a nova imagem Ê buscada e a ferramenta faz uma comparação binåria se ela mudou ou não.
Em caso de alteraçþes, a foto do perfil antigo Ê movida para o arquivo instagram_{username}_profile_pic_old.jpeg e a nova Ê salva no instagram_{username}_profile_pic.jpeg e tambÊm no arquivo chamado instagram_{username}_profile_pic_YYmmdd_HHMM.jpeg (para que possamos tem histórico de todas as fotos de perfil).
A ferramenta tambĂŠm possui detecção integrada de fotos de perfil vazias. O Instagram nĂŁo sinaliza o fato da imagem de perfil do usuĂĄrio vazia em sua API, por isso podemos detectĂĄ-la usando o modelo de imagem de perfil vazio (que parece ser o mesmo em nĂvel binĂĄrio para todos os usuĂĄrios).
Para usar este recurso, coloque o arquivo instagram_profile_pic_empty.jpeg no diretĂłrio a partir do qual vocĂŞ executa o script. Desta forma a ferramenta serĂĄ capaz de detectar quando o usuĂĄrio nĂŁo possui uma imagem de perfil definida.
Não Ê obrigatório, mas altamente recomendado, caso contrårio a ferramenta tratarå a foto de perfil vazia como normal, então, por exemplo, a remoção da foto de perfil pelo usuårio serå detectada como imagem de perfil alterada.
se você tiver o imgcat instalado, poderå ativar o recurso de exibição de fotos de perfil e imagens de histórias/postagens diretamente em seu terminal. Para isso coloque o caminho do seu binårio imgcat na variåvel IMGCAT_PATH (ou deixe-o vazio para desabilitar esta funcionalidade).
Se você deseja alterar o intervalo de verificação para 1 hora (3600 segundos), use o parâmetro -c :
./instagram_monitor.py misiek_to_ja -c 3600
Geralmente não Ê recomendado usar valores inferiores a 1 hora, pois serão rapidamente detectados pelos mecanismos automatizados de detecção da ferramenta do Instagram.
Para tornar o comportamento da ferramenta menos suspeito para o Instagram, por padrão o valor do intervalo de verificação Ê escolhido aleatoriamente no intervalo:
[ INSTA_CHECK_INTERVAL ( -c ) - RANDOM_SLEEP_DIFF_LOW ( -i ) ] <-----> [ INSTA_CHECK_INTERVAL ( -c ) + RANDOM_SLEEP_DIFF_HIGH ( -j ) ]
Portanto, ter o intervalo de verificação definido como 1 hora (-c 3600), RANDOM_SLEEP_DIFF_LOW definido como padrão 15 minutos (-i 900) e RANDOM_SLEEP_DIFF_HIGH definido como padrão 3 minutos (-j 180) significa que o intervalo de verificação serå com cada iteração escolhida de o intervalo de 45 minutos a 1 hora e 3 minutos.
à por isso que as informaçþes do intervalo de verificação são impressas no console e nas notificaçþes por e-mail, pois são essencialmente um número aleatório.
AlĂŠm disso, vocĂŞ tambĂŠm pode definir que as verificaçþes de novas postagens devem ser feitas apenas em intervalos de horas especĂficos, definindo CHECK_POSTS_IN_HOURS_RANGE como True e, em seguida, definindo valores adequados para as variĂĄveis ââMIN/MAX_H1/H2 (veja os comentĂĄrios no arquivo instagram_monitor.py para obter mais informaçþes ).
A ferramenta possui diversos manipuladores de sinais implementados que permitem alterar o comportamento da ferramenta sem a necessidade de reiniciå-la com novos parâmetros.
Lista de sinais suportados:
Sinal | Descrição |
---|---|
USR1 | Alternar notificaçþes por e-mail para novas postagens e histórias, seguidores alterados, biografia, foto (s) do perfil |
USR2 | Alternar notificaçþes por e-mail para novos seguidores (-m) |
ARMADILHA | Aumente o intervalo de verificação da atividade do usuårio (em 5 minutos) |
ABRT | Diminua o intervalo de verificação da atividade do usuårio (em 5 minutos) |
Portanto, se você deseja alterar a funcionalidade da ferramenta em execução, basta enviar o sinal adequado para a cópia desejada do script.
Eu pessoalmente uso a ferramenta pkill , por exemplo, para alternar notificaçþes por e-mail de novos seguidores para a instância da ferramenta que monitora o usuårio misiek_to_ja :
pkill -f -USR2 "python3 ./instagram_monitor.py misiek_to_ja"
Como o Windows suporta um nĂşmero limitado de sinais, esta funcionalidade estĂĄ disponĂvel apenas em Linux/Unix/macOS.
Verifique outros parâmetros suportados usando -h .
Você pode combinar todos os parâmetros mencionados anteriormente.
A operação da ferramenta pode sinalizar a conta e/ou IP do Instagram como sendo uma ferramenta automatizada (conforme descrito anteriormente).
Se vocĂŞ usa GRC e deseja ter a saĂda de log da ferramenta devidamente colorida vocĂŞ pode usar o arquivo de configuração disponĂvel aqui
Altere sua configuração do grc (normalmente .grc/grc.conf ) e adicione esta parte:
# monitoring log file
.*_monitor_.*\.log
conf.monitor_logs
Agora copie o conf.monitor_logs para o diretĂłrio .grc e os arquivos de log do instagram_monitor devem ficar bem coloridos ao usar a ferramenta grc .
Este projeto estĂĄ licenciado sob a GPLv3 - consulte o arquivo LICENSE para obter detalhes
- Gerar link
- X
- Outros aplicativos
ComentĂĄrios
Postar um comentĂĄrio