Instagram-Automatisierung

Inhalt

  • 1. Autorisierung





    • 1.1. Analyse





    • 1.2. Problem





    • 1.3. Erste Sicherheitslücke





    • 1.4. Die Lösung des Problems und die zweite Sicherheitslücke





  • 2. Datenerfassung





    • 2.1. Daten ohne Paginierung





    • 2.2. Paginierte Daten





  • 3. Ergebnis





Bei der Arbeit stieß ich auf eine interessante  Aufgabe, Instagram zu automatisieren , nämlich nur eine Zeichnung zu halten. Es gibt genügend Dienste für die Organisation dieses Unternehmens, es gibt sogar kostenlose. Aber es gab zusätzliche (Premium-) Bedingungen, außerdem wollte ich unbedingt selbst sehen, was sich in diesem beliebten Instagram befindet, und vielleicht Erfahrungen beim Erstellen einer API sammeln.





Zuerst habe ich mir angesehen, was das Internet sagt. Das Lesen der offiziellen Docks auf der Instagram-API machte deutlich, dass die Eigentümer keinen Zugriff auf unbegrenzte Automatisierung gewähren möchten. Sie können die Arbeit mit Ihrem Konto in der Basisversion automatisieren, dies passte jedoch nicht zu meiner Aufgabe, und die "Geschäfts" -Version der API erforderte eine Überprüfung des Unternehmens, was natürlich ist es passt mir nicht. (Vielleicht hat sich schon etwas geändert ...)





Dann habe ich mir angesehen, was das Internet über die Arbeit mit der API auf der Instagram-Website gesagt hat. Alles war rosig und war kein gutes Zeichen für Probleme. Es gab sogar PHP-Projekte auf Github, die APIs für die Automatisierung bis zur Veröffentlichung bereitstellten. In Artikeln über Habré wurde über die einfache Automatisierung gesprochen. Viele der Quellen waren von normaler Frische (einige Monate oder sogar Wochen). Jedoch …





Genehmigung

(fiddler + waterfox) instagram . . .





, .





Anfrage in der Firefox-Konsole, warum es ein Problem mit Access-Control-Allow-Origin gibt, das ich nicht kenne
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 :





Das Anzeigen der HTML-Antwort über einen Browser ist nicht sehr praktisch. Sie können sie einfach kopieren und in einen vertrauten Editor einfügen und überlegen, was Sie dort benötigen
html ,





:)





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





:





  • query_hash - :





    •  - d5d763b1e2acf209d62d22d184488e57





    •  - bc3296d1ce80a24b1b6e40b1e72903f5





    •  - c76146de99bb02f6415203be841dd25a





    •  - ff260833edf142911047af6024eb634a





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





    • first -  ( 50 50)





    • after -  ffirst. fafter  , ,  ( null)





:





Ja, usleep ist erforderlich, andernfalls wird der Zugriff durch diese Anforderung mit häufigem Zugriff eingeschränkt (selbst wenn Sie versuchen, ihn als regulären Benutzer über die Webversion zu verwenden).  Dies gilt insbesondere für große Datenmengen.  Zum Beispiel ist für das Zusammenstellen von ~ 300 Likes und ~ 1000 Kommentaren eine solche Pause ganz normal, aber während des Zusammenstellens von ~ 5000 Kommentaren wurde mein gefälschter Account mehr als einmal gesperrt, weshalb ich die Pause zwischen Anfragen auf 3-5 Sekunden erhöhen musste.  Und dann hat Instagram in einigen Fällen (anscheinend hing alles von den Sternen ab) ein Verbot für diese Anfrage erlassen.
, usleep , ( ). . ~300 ~1000 , , ~5000 , - 3-5 . ( ), .

  API  20 .





 Ich bin enttäuscht von der Qualität der  Instagram-API in der Webversion der Website. Ich dachte nicht, dass dies so mittelmäßig wäre. Es scheint, dass beim Generieren von Daten für die Autorisierung  alles auf das Maximum verdreht wird , aber dann wird alles gesenkt und eine große Sicherheitslücke gebildet - ich  habe Cookies mit Headern gestohlen und Zugriff erhalten .





Instagram hat mich zum Schwitzen gebracht und verschiedene Emotionen durch die Verwendung der API erfahren, aber das Ziel wurde vollständig erreicht. Verfasser: Vitaly Buturlin








All Articles