DOE AGORA Qualquer valor

inteligencia cibernetica

misiektoja/instagram_monitor

Navegação de arquivos do repositório

monitor_instagram

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.

Características

  • 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

instagram_monitor_screenshot

Registro de alterações

As notas de lançamento podem ser encontradas aqui

Isenção de responsabilidade

Não sou desenvolvedor, projeto feito como hobby. O código é feio e como está, mas funciona (pelo menos para mim) ;-)

Requisitos

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.

Instalação

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

Configuração

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).

Modo 1 sem conta Instagram logada (sem login de sessão)

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.

Modo 2 com conta Instagram logada (com login de sessão)

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.

Fuso horário

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 .

Configurações SMTP

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

Outros ajustes

Todas as outras variáveis ​​podem ser deixadas em seus padrões, mas sinta-se à vontade para experimentar.

Começando

Lista de parâmetros suportados

Para obter a lista de todos os parâmetros suportados:

./instagram_monitor.py -h

ou

python3 ./instagram_monitor.py -h

Modo de monitoramento

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

Como usar outros recursos

Notificações por e-mail

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:

instagram_monitor_email_notificações

Salvando atividades do usuário no arquivo CSV

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

Detecção de fotos de perfil alteradas

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.

Exibindo imagens de perfil/postagens/histórias em seu terminal

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).

Verifique o intervalo

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 ).

Controlando o script por meio de sinais (somente macOS/Linux/Unix)

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:

SinalDescrição
USR1Alternar notificações por e-mail para novas postagens e histórias, seguidores alterados, biografia, foto (s) do perfil
USR2Alternar notificações por e-mail para novos seguidores (-m)
ARMADILHAAumente o intervalo de verificação da atividade do usuário (em 5 minutos)
ABRTDiminua 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.

Outro

Verifique outros parâmetros suportados usando -h .

Você pode combinar todos os parâmetros mencionados anteriormente.

Limitações

A operação da ferramenta pode sinalizar a conta e/ou IP do Instagram como sendo uma ferramenta automatizada (conforme descrito anteriormente).

Colorir saída de log com GRC

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 .

Licença

Este projeto está licenciado sob a GPLv3 - consulte o arquivo LICENSE para obter detalhes

Comentários

Ebook

Postagens mais visitadas