Heim >Backend-Entwicklung >Python-Tutorial >Mobike-Crawler-Analyse – Finden Sie die API

Mobike-Crawler-Analyse – Finden Sie die API

PHPz
PHPzOriginal
2017-04-04 10:37:002434Durchsuche

Warnung: Dieser Artikel dient nur zu Lern- und Forschungsreferenzzwecken. Bitte verwenden Sie ihn nicht für illegale Zwecke.

Im vorherigen Artikel „Mobike Inoffizielle Big Data-Analyse“ habe ich meine Datenanalyse von Mobike während des Frühlingsfestes erwähnt. In der folgenden Artikelserie werde ich näher darauf eingehen diese Daten effizient?

Warum die Daten von Mobike crawlen

Mobike ist das erste gemeinsame Fahrrad, das nach Chengdu fährt. Jeden Tag, wenn ich aus der U-Bahn-Station aussteige, kann ich viele Fahrräder in der APP sehen, aber wenn ich dorthin gehe Als ich ankam, stellte ich fest, dass das Auto nicht da war. Manche Autos sind irgendwo versteckt; manche stehen möglicherweise hinter Hochhäusern und können aufgrund von GPS-Fehlern nicht gefunden werden; manche Autos sind durch eine Mauer abgetrennt, sodass Radfahrer sie nicht erreichen können.

Gibt es also eine Möglichkeit, die Daten dieser Fahrräder zu erhalten, um zu analysieren, ob diese Fahrräder zu Zombie-Fahrrädern geworden sind? Hat jemand es absichtlich in die Community gestellt, damit niemand darauf zugreifen kann?

Mit diesen Fragen begann ich zu untersuchen, wie man diese Daten erhält.

Wo bekomme ich die Daten?

Wenn Sie die Daten sehen können, haben wir immer eine Möglichkeit, die Daten automatisch abzurufen. Es ist lediglich so, dass die Datenbeschaffungsmethode die Effizienz der Datenbeschaffung bestimmt. Für die Datenanalyse von Mobike muss der Crawler in der Lage sein, in kurzer Zeit (normalerweise etwa 10 Minuten) mehr Daten zu erhalten. Woher kommen die Daten?

Die direkteste Quelle ist die Mobike APP. Modernes Softwaredesign achtet auf die Trennung von Front-End und Back-End, und der Server stellt gleichzeitig APP, Webseiten usw. bereit. Bei diesem Trend müssen wir nur die HTTP-Anfrage der Software herausfinden. Generell können folgende Tools helfen:

Direkte Paketerfassung:

Verwenden Sie einen Proxy, um HTTP-Anforderungspakete zu erfassen und zu debuggen :

  • Fiddler 4

  • Charles

  • Paketerfassung (Android)

Da mein Telefon nicht gerootet ist, gibt es zu viele Störungen bei der Paketerfassung auf dem Router und die Verwendung von https ist nicht einfach. Sie können also zunächst nur versuchen, Fiddler oder Charles zu verwenden. Legen Sie den Proxy von Fiddler auf und verschieben Sie dann den Standort auf dem Mobiltelefon weiter, um zu sehen, ob neue Anfragen vorliegen. Aber leider scheinen sich alle Anfragen auf den Erhalt der Amap Karte zu beziehen, und es liegen keine Daten zu Mobike vor.

Was ist los? Probieren Sie die mobile Version aus. Nach dem Wechsel zu Packet Capture gab es tatsächlich Datenverkehr, und ich fand in der Anfrage den Datenverkehr, der mich am meisten beunruhigte:

Mobike-Crawler-Analyse – Finden Sie die API

4372317-de272f8395d2106f.png

Diese API-Anfrage ist auf den ersten Blick ersichtlich. Nach dem Ausprobieren in Postman können die Informationen korrekt zurückgegeben werden.

Ich bin zu früh zu glücklich

Ich habe die Daten mehrere Tage hintereinander geklettert und die Daten analysiert. Ich habe festgestellt, dass das GPS von Mobike ständig zu schlagen scheint, und Manchmal überschreiten die Schläge eine Distanz von mehreren Kilometern, was offensichtlich kein normaler Wert ist.

Könnte es sein, dass ihre Schnittstelle manipuliert wurde, um falsche Daten zurückzugeben? Ich habe beobachtet, dass selbst in der APP die vom Fahrrad zurückgegebenen Daten sprunghaft anstiegen. Von einem frühen Morgen bis zum nächsten Morgen habe ich in regelmäßigen Abständen die Autos in der Nähe meines Zuhauses aufgefrischt, um zu sehen, ob dies wirklich der Fall war.

Bild Ich kann es nicht finden, aber nach der Beobachtung bin ich zu dem Schluss gekommen, dass tatsächlich etwas mit dem in der APP zurückgegebenen Standort nicht stimmt. An einem sehr abgelegenen Ort stand ein Auto. Es verschwand für eine Weile, kam dann aber wieder zurück und stimmte mit den von mir erfassten Daten überein. Darüber hinaus hat dieser Sprung nichts mit Mobiltelefonen, Mobiltelefonnummern oder sogar Mobilfunkbetreibern zu tun, was zeigt, dass dieser Sprung ein Problem mit der Benutzeroberfläche von Mobike ist. Dies kann auch aus einem anderen Aspekt erklären, warum wir manchmal Autos sehen, es aber tatsächlich keine gibt Autos dort.

Dies ist ein Screenshot eines Videos, das ich zuvor auf Moments gepostet habe. Sie können sehen, dass es dort in der Nähe des Lagereingangs tatsächlich eine scharfe Stelle gibt Der GPS-Track zeigt es für kurze Zeit an. Der innere Körper bewegt sich in die Nähe, bewegt sich sogar weit weg und kehrt dann zu dieser Position zurück.

Mobike-Crawler-Analyse – Finden Sie die API


Solche Daten sind für die Datenanalyse einfach unbrauchbar und ich hätte fast aufgegeben.

Turnaround

Mit der Beliebtheit des WeChat-Miniprogramms startete Mobike auch sofort das Miniprogramm. Ich habe gelacht, als ich es sah, ja, es gab mir eine weitere Datenquelle zum Ausprobieren. Nachdem die Daten einmal mit Packet Capture erfasst wurden, ist es einfach, die API zu bestimmen. Der spezifische Prozess wird hier nicht erläutert. Nach dem Crawlen habe ich zwei oder drei Tage lang Daten gecrawlt und festgestellt, dass es eine Wende gab und die Daten mit normalen Fahrradwegen übereinstimmten.

Das Einzige, was noch übrig bleibt, ist, die Effizienz des Crawlers zu verbessern.

Andere Versuche

Manchmal ist es sehr praktisch, den Quellcode der APP direkt zu analysieren, um den API-Eingang zu finden. Ich habe jedoch festgestellt, dass mit Ausnahme einiger Ressourcendateien Es war nützlich, andere Dateien werden mit dem Obfuscator von Qihoo 360 gepackt. Es gibt Artikel im Internet, die analysieren, wie man einen Beschuss durchführt, aber ich habe nicht viel Zeit, mich damit zu beschäftigen, also vergiss es.

Sprechen Sie auch über API-Design

Der Grund, warum die API von Mobike leicht zu crawlen und zu analysieren ist, liegt größtenteils darin, dass das API-Design zu einfach ist:

  • Verwendet nur HTTP-Anfragen, was die Durchführung einer Paketerfassungsanalyse erleichtert

  • Keine dieser APIs verschlüsselt die Anfrage, was die Nutzung ihrer Dienste erleichtert.

  • Darüber hinaus sind WeChat-Miniprogramme auch eine wichtige Quelle für durchgesickerte APIs. Schließlich können Anfragen in APPs durch nativen Code verschlüsselt und dann versendet werden, aber es scheint, dass dies der Fall ist In Miniprogrammen gibt es so etwas nicht.

Wenn Sie interessiert sind, können Sie einen Blick auf die Anfrage der Xiaolan Bicycle APP werfen. Sie verwenden https-Anfrage und verschlüsseln die Datenanfrage. Es wird stark zunehmen.

Wenn sich Mobike-Beamte natürlich nicht um Daten kümmern, wäre ein solches API-Design in Ordnung.


Das obige ist der detaillierte Inhalt vonMobike-Crawler-Analyse – Finden Sie die API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn