Kürzlich habe ich einen WeChat-Werbebeitrag gesehen und einige Nachforschungen angestellt, als ich nichts zu tun hatte. Ich habe festgestellt, dass diese Aktivität zum Bürsten von Stimmen verwendet werden kann. Ich werde kurz den Prozess des Schreibens eines Skripts zum Bürsten von Stimmen aufzeichnen. Tatsächlich ist die Implementierung dieser Art von Crawler-Code immer ein kleines Problem. Das Wichtigste ist, dass Sie die Logik der Seiten anderer Leute kennen müssen.
Öffnen Sie die WeChat-Abstimmungsseite, ziehen Sie den Bildschirm nach unten und Sie werden feststellen, dass oben auf dem Bildschirm „Diese Webseite wird von XXX bereitgestellt“ angezeigt wird. Beachten Sie, dass „XXX“ hier nicht „mp.weixin.qq“ ist. com“, sondern der Domainname des Veranstalters Party. Mit anderen Worten: Das Programm für diese Abstimmungsaktivität läuft auf dem Server von S Mall. Dies beinhaltet das Konzept von OpenID auf der öffentlichen WeChat-Plattform. Die offizielle Erklärung von OpenID lautet: Nach der Verschlüsselung der WeChat-ID verfügt jeder Benutzer über eine eindeutige OpenID für jedes öffentliche Konto. Das heißt, ein Benutzer hat eine eindeutige OpenId für ein öffentliches Konto.
Die Abstimmungslogik besteht darin, dass der Benutzer seine OpenID im POST-Parameter angibt, wenn er eine Abstimmungsanfrage stellt. Nach Erhalt der Abstimmungs-POST-Anfrage kann der kleine Server einen einzelnen Benutzer blockieren, indem er innerhalb von 4 Stunden abfragt, ob die aktuelle OpenID abgestimmt hat . Der Abstimmungsvorgang wird wiederholt.
Allerdings gibt es hier eine große Lücke!
S Mall kann nur feststellen, ob die OpenID dupliziert ist, aber es kann die Gültigkeit der OpenID nicht überprüfen, da es den WeChat-Server nicht anrufen kann, um die OpenID zu überprüfen.
Dann müssen wir nur noch eine OpenId generieren, die dem Format entspricht, und eine Post-Anfrage senden.
Aber eine Abstimmung ist auch insofern seltsam, als sie tatsächlich in zwei Schritten erfolgt. Das erste Mal ist eine Get-Anfrage (der codierte Teil im Bild dient dem Datenschutz. Sie müssen nur wissen, dass eine Abstimmung durch zwei Anfragen abgeschlossen wird.
Als ich den Namen der ersten Anfrage sah, dachte ich, die Anfrage sei abgeschlossen, aber als ich einen Crawler für den Zugriff auf diese Schnittstelle verwendete, erhöhte sich die Anzahl der Stimmen nicht. Bei näherer Betrachtung stellte ich fest, dass es sich um eine weitere Anfrage handelte.
Der Pfad dieser Anfrage ist sehr seltsam, es handelt sich um eine Folge verstümmelter Zeichen, die jedes Mal anders ist. Nachdem nur die erste Anfrage ausgelöst wurde, wurden zu diesem Zeitpunkt keine weiteren Vorgänge ausgeführt. Ich kann sicher sein, dass eine Abstimmung darin besteht, einige zufällig generierte Parameter über die erste Anfrage abzurufen und diese Parameter dann mit der zweiten Anfrage mitzubringen, um die Legitimität sicherzustellen Mit der zweiten Anfrage ist ein Abstimmungsprozess abgeschlossen. Es muss also irgendwo auf der Seite der ersten Anfrage eine Stelle geben, die die zweite Anfrage aufruft. Als ich zu diesem Zeitpunkt den Quellcode überprüfte, stellte ich fest, dass die Seite eine solche Codefolge enthielt
Wenn auf der Seite verstümmelte Zeichen gefunden werden, liegt das häufig daran, dass der Code verschlüsselt wurde.
Zwei der Parameter sind die Pfade der zweiten Anfrage. Es ist ersichtlich, dass diese Zeichenfolge verstümmelter Zeichen mit der zweiten Anforderung zusammenhängt und die Emoticon-Zeichenfolge die Verschlüsselung des JS-Codes ist. Obwohl wir nicht verstehen, was diese Zeichenfolge verstümmelter Zeichen bedeutet, können wir das Semikolon (;) drücken, um die Zeichenfolge verstümmelter Zeichen zu formatieren und sie direkt in der Chrome-Konsole auszuführen. Wir stellen fest, dass die Wirkung dieser Zeichenfolge verstümmelt ist um die zweite Anfrage auszuführen. (Dieser Ort sollte in der Lage sein, den Code wiederherzustellen. Wenn Sie ihn kennen, können Sie ihn erklären.)
Dies ist im Grunde erledigt, der Rest ist die Code-Implementierung. Im Allgemeinen besteht es darin, auf die erste Anforderung zuzugreifen, reguläre Regeln zum Crawlen der Parameter auf der Seite zu verwenden und die Parameter als Pfad der zweiten Anforderung zu verwenden, um die zweite Anforderung zu verarbeiten . Angeforderter Zugriff. Natürlich gibt es auch einen IP-Proxy mit zufälligen Zeitintervallen für den Zugriff. Das heißt, wir werden die häufigen Probleme beim Ändern des Benutzeragenten nicht erläutern , können Sie eine E-Mail senden.
Im Allgemeinen ist es nicht schwierig, Code mit Python zu implementieren. Die Schwierigkeit besteht darin, Schritt für Schritt zu analysieren, die Logik der Website zu beherrschen und es ständig zu versuchen. Dies wird nur dann effektiv sein, wenn Sie es häufiger tun