O Osintgram funciona em contas privadas do Instagram?
Não. Contra um perfil privado que a conta com a qual você fez login não segue, o Osintgram recusa 18 dos seus 21 comandos de dados antes de buscar qualquer coisa. A única exceção documentada, escrita no próprio README do projeto, é uma conta privada que você já segue.
A resposta curta
Não. Aponte o Osintgram para uma conta privada do Instagram que o perfil com o qual você fez login não segue e 18 dos seus 21 comandos de dados se recusam a rodar antes de buscar um único registro. Isso não é problema de versão, nem rate limit, nem algo que um fork resolva. É uma verificação deliberada que roda antes de cada um desses comandos.
O próprio projeto afirma isso na documentação. A pergunta 1 do FAQ no README do Osintgram diz, literalmente: "No, you cannot get information on private profiles. You can only get information from a public profile or a profile you follow. The tools that claim to be successful are scams!" (Não, você não consegue informações de perfis privados. Só dá para obter informações de um perfil público ou de um perfil que você segue. As ferramentas que dizem conseguir são golpes!)
Essa oração do meio é o artigo inteiro. "A profile you follow" (um perfil que você segue) é uma exceção real e verificável, e não é um desbloqueio parcial. Se a conta com a qual você fez login já segue o alvo privado, todo comando bloqueado se comporta exatamente como se comportaria contra um perfil público.
O Osintgram não consegue ler uma conta privada do Instagram. A exceção é estreita e documentada: uma conta privada que a conta do Instagram usada na autenticação já segue, e nesse caso nada fica bloqueado. Todo o resto para em uma única função, check_private_profile(), que retorna cedo sempre que o alvo é privado e você não é seguidor. Nenhum fork, flag, mod ou serviço pago muda essa condição, porque a condição é do Instagram.
A trava, lida direto no código-fonte
Dezenove métodos em src/Osintgram.py começam com as mesmas duas linhas: chamam check_private_profile() e, se o retorno for true, dão return. Aqui está essa função, sem a indentação do corpo da classe, mas no restante inalterada.
def check_private_profile(self):
if self.is_private and not self.following:
pc.printout("Impossible to execute command: user has private profile\n", pc.RED)
send = input("Do you want send a follow request? [Y/N]: ")
if send.lower() == "y":
self.api.friendships_create(self.target_id)
print("Sent a follow request to target. Use this command after target accepting the request.")
return True
return FalseDois atributos decidem tudo. self.is_private é definido em setTarget() a partir da consulta ao alvo, que devolve apenas o ID numérico e a flag de privado. self.following é definido logo em seguida por check_following(), que lê friendship_status.following na resposta do próprio endpoint users/{user_id}/full_detail_info/ do Instagram. A ferramenta não deduz a sua relação com o alvo; ela pergunta ao Instagram e acredita na resposta.
A condição é um AND. Ser privado, sozinho, não bloqueia. Não seguir, sozinho, não bloqueia. Só o par bloqueia. É por isso que a resposta é um não condicional, e é por isso que a condição é inútil para quem espera um bypass: ela se resume a "a conta já deixou você entrar".
Você enxerga esse estado antes de digitar qualquer coisa. O banner é impresso quando a sessão abre, e todo comando bloqueado imprime a mesma linha vermelha.
Logged as <you>. Target: <target> [1234567890] [PRIVATE PROFILE] [NOT FOLLOWING]
Run a command: followers
Impossible to execute command: user has private profile
Do you want send a follow request? [Y/N]:Esse pedido de follow é uma ação real
Responder Y chama friendships_create(self.target_id). Isso envia uma solicitação de seguir de verdade, a partir da conta que estiver em config/credentials.ini, para a pessoa que você está investigando, e ela vê. Em um trabalho real, isso é uma exposição. Se o plano é conseguir a aprovação com uma persona que não é sua, você já saiu completamente da pesquisa em fontes abertas.
A detecção de follow é o bug mais reportado da ferramenta
Pessoas que realmente seguem o alvo privado continuam vendo [NOT FOLLOWING] e continuam bloqueadas. Veja a issue #174, "Can't check private account even if followed", e a issue #1031. Nenhuma das duas tem resolução documentada. Se você está dentro da exceção documentada e a ferramenta discorda de você, isso é um defeito conhecido, não uma trava escondida.
Quais comandos ainda rodam contra um alvo privado
Dos 21 comandos de dados que o main.py despacha, 18 ficam atrás da trava: addrs, captions, comments, commentdata, followers, followings, fwersemail, fwingsemail, fwersnumber, fwingsnumber, hashtags, likes, mediatype, photodes, photos, stories, wcommented e wtagged. Contra um alvo privado que você não segue, todos eles imprimem a mensagem de bloqueio e retornam. (O décimo nono ponto de chamada é um método interno que a tabela de comandos nunca alcança.)
Três comandos não têm guarda: info, propic e tagged. Os dois primeiros leem users/{user_id}/full_detail_info/ diretamente, que é o mesmo endpoint usado pela verificação de follow. Esse endpoint responde para alvos privados, e é exatamente por isso que o check_following() funciona. O documento do perfil é servido; o conteúdo por trás dele, não.
O tagged é uma esquisitice, não um furo. O get_people_tagged_by_user() pula a verificação e depois chama __get_feed__(), que pagina o feed de posts do próprio alvo, exatamente os dados cobertos pela barreira do follow. Falta a guarda; o que ela protegeria continua atrás da barreira. Guarda ausente não é acesso.
Existe um segundo backend, e ele é mais rígido. Se o config/credentials.ini trouxer um hikerapi_token, ou se HIKERAPI_TOKEN estiver definido no ambiente, o main.py monta o HikerCLI de src/hikercli.py no lugar do outro. Essa classe traz a própria cópia da trava, sem a cláusula de follow.
def check_private_profile(self):
if self.is_private:
pc.printout(
"Impossible to execute command: user has private profile\n", pc.RED
)
return True
return FalseNesse caminho um perfil privado é recusado quer você o siga ou não, porque não é você quem faz a requisição. Quem faz é uma API de terceiros, e ela não tem relação nenhuma com o alvo. O banner dela também derruba a tag [FOLLOWING] por completo, pelo mesmo motivo. Como esse backend é o caminho que ainda foi pensado para funcionar, a exceção documentada está encolhendo: o Osintgram ainda funciona explica por que o login por senha quebrou.
A matriz de capacidades
É isto que cada uma das três situações entrega. A coluna do meio é a que as pessoas realmente querem saber.
| Dado | Público | Privado, sem seguir | Privado, você segue |
|---|---|---|---|
Usuário, ID, nome completo, bio (info) | Sim | Sim | Sim |
Números de seguidores e de seguindo (info) | Sim | Sim | Sim |
E-mail e telefone comerciais públicos (info) | Sim | Sim | Sim |
Foto de perfil (propic) | Sim | Sem trava, por design | Sim |
Posts e legendas (photos, captions) | Sim | Não | Sim |
Stories (stories) | Sim | Não | Sim |
| Listas de seguidores e de seguindo | Sim | Não | Sim |
| Totais de curtidas e comentários | Sim | Não | Sim |
| E-mails e telefones dos seguidores | Sim | Não | Sim |
Geotags (addrs) e hashtags | Sim | Não | Sim |
Usuários marcados pelo alvo (tagged) | Sim | Sem trava, lê o feed de posts | Sim |
Usuários que marcaram o alvo (wtagged) | Sim | Não | Sim |
Duas ressalvas. O propic não tem trava no código, mas se o Instagram ainda devolve o hd_profile_pic_url_info em resolução total para um alvo privado que você não segue em 2026 não foi testado aqui: o Osintgram programa um fallback para quando essa chave não vem, e usuários do instaloader relatam que ela some. Leia essa célula como "por design", não como garantia. A terceira coluna também pressupõe que você consiga fazer login. O que cada comando retorna em um alvo sem trava está em todos os comandos do Osintgram, explicados.
Não existe seção de bypass neste artigo
Se você veio atrás de um fork, uma flag, uma build modificada ou uma API paga que leia um grid privado, esta página não tem nada disso. O motivo é estrutural, não editorial: a trava é uma decisão do lado do servidor do Instagram, e o Osintgram apenas repassa o resultado. Tudo que afirma o contrário está vendendo outra coisa, que é o assunto da próxima seção.
O que o Instagram publica sobre uma conta privada mesmo assim
"Privado" no Instagram significa conteúdo privado, não conta privada. Um perfil privado ainda serve um documento de metadados bem grande para uma requisição sem login e sem cookies. Os campos abaixo vêm de uma consulta deslogada feita em 8 de agosto de 2026 contra uma conta privada, que não é identificada aqui.
curl -s \
"https://www.instagram.com/api/v1/users/web_profile_info/?username=USERNAME" \
-H "x-ig-app-id: 936619743392459"| Campo público | O que contém | Por que importa |
|---|---|---|
username, id, full_name | Identidade mais um ID numérico estável | O ID sobrevive a mudanças de nome de usuário |
biography, bio_links, external_url | Texto livre e links de saída | O campo público mais rico, e um pivô entre plataformas |
edge_owner_to_timeline_media.count | O número real de posts, sem máscara | Monitore ao longo do tempo para ver a cadência de publicação |
edge_followed_by, edge_follow | Números de seguidores e de seguindo | Crescimento, limpezas e períodos de inatividade |
profile_pic_url_hd | Imagem 320x320, apesar do nome | Insumo para busca reversa de imagem |
is_private, is_verified, category_name | Flags de status da conta | Confirmam com o que você está lidando |
edge_mutual_followed_by | Seguidores em comum, dependentes de quem olha | Um grafo parcial de seguidores, sem pedido de follow |
edge_owner_to_timeline_media.edges | Vazio para uma conta privada | O conteúdo em si não sai |
Dois deles surpreendem as pessoas. O número de posts não é mascarado; o valor verdadeiro é entregue a qualquer um que pedir. E profile_pic_url_hd é um nome enganoso: toda conta verificada, pública ou privada, parou em 320 por 320 pixels, com profile_pic_url em 150. A resolução total de verdade fica atrás do endpoint mobile autenticado, que é o único lugar onde o propic poderia superar um navegador.
Os mesmos dados chegam aos crawlers via HTML puro. Uma requisição com user agent do Googlebot recebe um título de página renderizado no servidor, uma descrição OpenGraph que carrega os três números em uma única string e a bio na meta tag description. É por isso que perfis privados aparecem no Google, e por isso que colar um deles no Slack ou no Discord gera um preview com o nome e a bio da pessoa.
Nada disso é uma API na qual você possa se apoiar. Depois de cerca de 20 consultas deslogadas em sequência, o endpoint passa a responder com "message":"Please wait a few minutes before you try again." e "require_login":true. Essa flag é o indício: o caminho anônimo é uma tolerância, não uma interface suportada.
Por que os sites de "visualizador de perfil privado" são golpe
O README chama esses sites de golpe e a mecânica está documentada. Uma análise da MalwareTips sobre um desses sites, publicada em 19 de fevereiro de 2026, descreve o funil padrão: você digita um nome de usuário, assiste a barras de progresso falsas rotuladas como "Fetching profile" e "Decrypting" e então é informado de que é preciso fazer uma verificação humana. Nas palavras da análise, "This isn't verification. It's monetization," (isso não é verificação, é monetização) e "Each completed offer can generate a payout." (cada oferta concluída pode gerar um pagamento).
O que essas ofertas coletam: endereços de e-mail e números de telefone para revenda, permissão de notificação do navegador para adware persistente, dados de cartão para testes com renovação automática e, nas variantes de instalação de app, acesso ao aparelho por meio de um APK instalado fora da loja. O loop é proposital; o site informa que a verificação falhou para poder empurrar mais uma oferta. Nenhum dado de perfil é buscado em momento algum.
O próprio litígio da Meta é a versão documentada em tribunal do mesmo padrão. Ao processar a Octopus por software de raspagem sob encomenda em julho de 2022, a Meta afirmou que "After paying for access to the scraping software, customers self-compromised their Facebook and Instagram accounts by providing their authentication information to Octopus" (depois de pagar pelo acesso ao software de raspagem, os clientes comprometeram as próprias contas do Facebook e do Instagram ao entregar suas informações de autenticação à Octopus) (ações contra a raspagem sob encomenda). A mesma leva cobriu sites clone que republicavam perfis sem autorização, afetando mais de 350.000 usuários do Instagram. Em janeiro de 2023 a Meta processou a Voyager Labs, que tinha operado cerca de 38.000 contas falsas para coletar dados visíveis apenas para quem estava logado.
Também não sobrou nenhuma API legítima para alegar. A Meta descontinuou a Instagram Basic Display API em 4 de dezembro de 2024, e a substituta atende apenas contas Business e Creator. Qualquer produto de 2026 que anuncie acesso em nível de API a uma conta pessoal, privada ou pública, está anunciando uma API que não existe mais. O Osintgram e o instaloader também não usam uma API; eles se passam pelos clientes mobile e web, e é por isso que herdam a barreira do follow em vez de contorná-la.
A prova mais forte de que isso é comportamento do Instagram, e não uma limitação do Osintgram, é que um projeto totalmente separado codifica a mesma regra. O instaloader repete uma única frase nos métodos de post, de seguidores e de seguindo, "To use this, one needs to be logged in and private profiles has to be followed" (para usar isto é preciso estar logado, e perfis privados precisam ser seguidos), traz uma exceção dedicada PrivateProfileNotFollowedException e afirma na sua página de troubleshooting que você precisa seguir uma conta privada para acessar a maior parte das informações dela.
Onde fica a linha jurídica
A jurisprudência americana convergiu para uma metáfora que encaixa muito bem no Instagram. Em Van Buren v. United States (Suprema Corte, junho de 2021), a corte entendeu que "exceeds authorized access" (exceder o acesso autorizado) sob o CFAA não alcança quem "have improper motives for obtaining information that is otherwise available to them" (tem motivos impróprios para obter informação que de outro modo já está disponível para essa pessoa). O Nono Circuito aplicou isso em hiQ Labs v. LinkedIn (abril de 2022): a análise de "without authorization" (sem autorização) "presupposes that there first be the equivalent of a gate that restricts access" (pressupõe que exista antes o equivalente a um portão que restringe o acesso).
Uma conta privada do Instagram é o portão. Os metadados públicos do perfil estão com o portão aberto: colete, registre de onde vieram e siga em frente. Passar da barreira do follow com credenciais roubadas, uma sessão logada emprestada, um pedido de follow enganoso ou uma sessão de scraper comprada é portão fechado, e nenhum propósito de pesquisa converte um no outro.
Uma segunda exposição recai especificamente sobre o Osintgram. Em Meta Platforms v. Bright Data (N.D. Cal., janeiro de 2024), a alegação de violação dos termos de serviço girou em torno de a raspagem ter ocorrido ou não com a pessoa logada em uma conta Meta. O backend clássico do Osintgram autentica com uma conta real do Instagram, o que o coloca exatamente dentro da categoria vinculada aos termos. Na prática, a resposta do Instagram é no nível da conta, e não jurídica, na forma de desafios e bloqueios, e é por isso que o README avisa para você não usar sua conta principal.
Nada disso está resolvido globalmente. Van Buren, hiQ e Bright Data são autoridade dos Estados Unidos e não decidem nada no Reino Unido nem na União Europeia. No Reino Unido, a seção 1 do Computer Misuse Act 1990 torna crime o acesso não autorizado e consciente a material informático, com pena de até 12 meses em condenação sumária e dois anos em processo por acusação formal. Na União Europeia, dado pessoal disponível publicamente continua sendo dado pessoal: as Diretrizes 1/2024 do EDPB estabelecem um teste de legítimo interesse em três partes, e limitação de finalidade, minimização de dados e transparência continuam valendo para tudo que for coletado de uma página pública.
O que a pesquisa autorizada faz em torno de uma conta privada
Recusar o bypass não deixa você sem nada. Uma conta privada fica dentro de um grafo público, e o grafo é território liberado.
- Os números são uma série temporal. As contagens de posts, de seguidores e de seguindo são servidas para contas privadas. Registradas semanalmente, elas mostram cadência de publicação, crescimento ou limpeza de seguidores e períodos de inatividade, sem que você veja um único post.
- A bio é o campo público mais rico. Ela costuma trazer uma URL externa, um agregador de links, um empregador, uma cidade ou um endereço de e-mail. É o pivô padrão entre plataformas, e o Instagram não oferece nenhuma configuração que a esconda.
- Seguidores em comum aparecem para quem está logado. O Instagram renderiza uma linha "Followed by" ("Seguido por") acima do grid bloqueado, e não existe botão para suprimir isso. É uma fatia parcial do grafo de seguidores, dependente de quem olha, obtida sem enviar nenhum pedido de follow.
- Os posts dos outros são dos outros. Conteúdo que marca ou tem coautoria de um usuário privado é servido conforme a configuração de privacidade da conta dona do post, não a do usuário privado. Essa é a base honesta de toda a categoria de técnicas de "marcado por terceiros".
- Faça busca reversa da foto de perfil, com cuidado. Com um teto de 320 pixels você está na faixa degradada para comparação facial. Trate como "em que outros lugares esta imagem exata foi publicada", e não como identificação. O Yandex é o mais forte em rostos e recortes; o TinEye só encontra cópias quase idênticas.
Pule a etapa de arquivo para a URL do perfil
O manual padrão de OSINT manda checar o Wayback Machine. Para URLs de perfil do instagram.com especificamente, isso quase nunca funciona: existem snapshots, mas eles resolvem para uma casca JavaScript sem meta tags, sem bio e sem números, verificado em 8 de agosto de 2026. O Google aposentou o cache público de páginas em fevereiro de 2024. Os arquivos continuam valendo o tempo para reposts de terceiros e cobertura jornalística que tenha embutido o conteúdo.
Nada disso entrega conteúdo, e esse é justamente o ponto. O produto final de uma pesquisa autorizada em torno de uma conta privada é uma pegada pública documentada mais uma lacuna explícita e rotulada, não uma reconstrução do que está atrás da barreira. Se o conteúdo é mesmo o requisito, os caminhos restantes passam por uma pessoa: o titular da conta, um pedido à plataforma ou via judicial. Não existe resposta de ferramenta para essa pergunta.
Se a conta em que você está trabalhando é pública, a trava nem entra em cena. Se você ainda não colocou o Osintgram para rodar, comece pelo guia de instalação, mas leia antes o Osintgram ainda funciona: a camada de login falha muito antes da trava de privacidade.