Incapsula mit Selen umgehen

Der Kunde hat mit einem Problem angesprochen, dass sein Sammler den Schutz "incapsula" nicht bewältigen kann.

Kurz gesagt, anstelle des Seitencodes wird ein Javascript-Code zurückgegeben, wenn er ausgeführt wird, eine Anforderung an die Serverkapselungen gestellt wird, einige Browserparameter überprüft werden und wenn der Browser als gültig erkannt wird, werden die Seite und einige Cookies zurückgegeben .





Eine ausführliche Beschreibung finden Sie auf der Website des Entwicklers (www.imperva.com).



Das Hinzufügen eines Javascript-Prozessors sowie anderer von Google angebotener Lösungen (z. B. das Erhöhen Ihrer Server) schien zu kompliziert / lang. Wie sich herausstellte, umgeht Selen diesen Schutz perfekt, aber da es viele Daten und das Sammeln in einem Stream gibt (oder sogar zwischen Registerkarten wechseln), wollte ich das nicht und es gab nicht genügend Ressourcen, um mehrere Browser zu starten Es wurde beschlossen, einen Proxyserver zu schreiben.



Da sich die Belastung je nach Tageszeit und anderen Bedingungen änderte, wurde beschlossen, ein skalierbares Webpart durch die Kombination von Nginx + uwsgi + Kolben herzustellen. Es schien zu kostspielig, die Selenium-Version für jeden Mitarbeiter auszuführen, und so wurde beschlossen, Selenium in einen separaten Dienst mit Kommunikation zwischen Blöcken über Redis zu verschieben. Um die Implementierung so einfach wie möglich zu halten, werden Anforderungen synchron ausgeführt.





Projektstruktur







uwsgi.ini – . , .  (



 selenium:

gecko/Sel.py



sellenium . , selenium  , ( ). cookie Redis. Cookie , redis. cookie    callback .





API:





src

, 1 url:





@app.route('/', methods=['GET', 'POST'])
      
      



, url url, , post .





:





http://127.0.0.1:5000/?url=https://www.example.com/vehicledetails/34313441?RowNumber=0& 
      
      



, , , .



request.py .

  requests,   .

Redis, Post, Get c reqests.

, cookie, Selenium .



 , . https, , , . . , .









uwsgi








All Articles