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