顧客は、コレクターが保護「カプセル内」に対処できないという問題に対処しました。
簡単に言うと、ページコードの代わりに、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, , , . . , .