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