Automação Instagram

Conteúdo

  • 1. Autorização





    • 1.1. Análise





    • 1.2. Problema





    • 1.3. Primeira brecha de segurança





    • 1.4. A solução para o problema e a segunda brecha de segurança





  • 2. Coleta de dados





    • 2.1. Dados sem paginação





    • 2.2. Dados paginados





  • 3. Resultado





No trabalho me deparei com uma tarefa interessante  de automatizar o Instagram , ou seja, bastava fazer um desenho. Existem serviços suficientes para organizar este empreendimento, existem até gratuitos. Mas havia condições adicionais (leia-se premium), além disso, eu realmente queria ver por mim mesmo o que havia dentro desse instagram popular e talvez ganhar experiência na construção de uma API.





Em primeiro lugar, fui ver o que a Internet estava dizendo. A leitura dos docks oficiais na API do Instagram deixou claro que os proprietários não querem dar acesso à automação ilimitada, é possível automatizar o trabalho com sua conta na versão básica, mas isso não cabia na minha tarefa, e a versão "business" da API exigia verificação da empresa, o que é natural não combina comigo. (Talvez algo já tenha mudado ...)





Então fui ver o que a Internet estava dizendo sobre como trabalhar com a API no site do Instagram. Tudo estava otimista e não era um bom presságio para problemas. Havia até projetos php no github que forneciam APIs para automação até postagem. Artigos sobre Habré falavam sobre a facilidade de automação. Muitas das fontes estavam com o frescor normal (alguns meses, ou mesmo semanas). Contudo …





Autorização

(fiddler + waterfox) instagram . . .





, .





Solicite no console do Firefox por que há um problema com Access-Control-Allow-Origin que não sei
Firefox, Access-Control-Allow-Origin

- POST https://www.instagram.com/accounts/login/ajax/ .  enc_password -  ,  : ( , ) :





  •  (PWDINSTAGRAMBROWSER)





  •  (10)





  •  (unixtime 1591030811)









 unixtime , .





, , . github nodejs. , .





    . , instagram .  ( )    , . .





,   ,     js.   js ( )  …  ( ),   ,   .





  instagram php,     js.  ( xhr , fiddler)  php . -     .





… . 7 - ,   - ( , ip),   ).





nodejs  puppeteer  . :)





,   ,  ( )   . ,   ( )  . -   . , ,    , :)





,  ( ):





php node.js , node.js , , , .









.   . html :





Visualizar a resposta html por meio de um navegador não é muito conveniente, você pode apenas copiar e colar em um editor familiar e considerar o que precisa lá
html ,





:)





 . . Instagram API graphql (- rust-full ). .





:





  • query_hash - :





    •  - d5d763b1e2acf209d62d22d184488e57





    •  - bc3296d1ce80a24b1b6e40b1e72903f5





    •  - c76146de99bb02f6415203be841dd25a





    •  - ff260833edf142911047af6024eb634a





  • variables - json (urlencode ), , , ,    :





    • first -  ( 50 50)





    • after -  ffirst. fafter  , ,  ( null)





:





Sim, o usleep é necessário, caso contrário, o acesso por esta solicitação com acesso frequente será limitado (mesmo se você tentar usá-lo como um usuário regular através da versão web).  Isso é especialmente verdadeiro para grandes quantidades de dados.  Por exemplo, para reunir ~ 300 curtidas e ~ 1000 comentários, essa pausa é normal, mas durante a montagem de ~ 5000 comentários, minha conta falsa foi banida mais de uma vez, por isso tive de aumentar a pausa entre as solicitações para 3-5 segundos.  E então, em alguns casos (aparentemente tudo dependia das estrelas), o Instagram proibiu esse pedido.
, usleep , ( ). . ~300 ~1000 , , ~5000 , - 3-5 . ( ), .

  API  20 .





 Estou decepcionado com a qualidade da API do  instagram na versão web do site, não achei que seria tão medíocre, parece que tudo está torcido ao máximo na geração de dados para autorização  , mas aí tudo se abaixa e uma grande brecha de segurança se forma -  roubei cookies com cabeçalhos e consegui acesso .





O Instagram me fez suar e experimentar várias emoções ao usar a API, mas o objetivo foi alcançado na íntegra. Autor: Vitaly Buturlin








All Articles