セレンでカプセルをバイパスする

顧客は、コレクターが保護「カプセル内」に対処できないという問題に対処しました。

簡単に言うと、ページコードの代わりに、JavaScriptコードが返され、実行されると、サーバーカプセル化に対してリクエストが行われ、一部のブラウザパラメータがチェックされ、ブラウザが有効であると認識されると、ページと一部のCookieが返されます。 。





詳細な説明は、開発者のWebサイト(www.imperva.com)にあります。javascript



プロセッサの追加、およびGoogleが提供する他のソリューション(サーバーの引き上げなど)は、複雑すぎて長すぎるように見えました。 Seleniumは、結局のところ、この保護を完全にバイパスしますが、1つのストリームに大量のデータと収集があるため(またはタブを切り替えることさえ)、私は望んでいませんでした。また、複数のブラウザーを起動するのに十分なリソースがありませんでした。 、プロキシサーバーを作成することが決定されました。



時間帯などにより負荷が変化するため、Nginx + uwsgi +フラスコを組み合わせてスケーラブルなウェブパーツを作成することにしました。すべてのワーカーに対してSeleniumバージョンを実行するにはコストがかかりすぎるように思われたため、Redisを介したブロック間の通信を使用して、Seleniumを個別のサービスに移動することが決定されました。実装をできるだけ単純にするために、リクエストは同期的に実行されます。





プロジェクト構造







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