Bypassing Incapsula dengan selenium

Pelanggan telah mengatasi, dengan masalah yang kolektornya tidak dapat mengatasi perlindungan "incapsula".

Singkatnya, alih-alih kode halaman, kode javascript dikembalikan, saat dijalankan, permintaan dibuat ke enkapsulasi server, beberapa parameter browser diperiksa, dan jika browser dikenali sebagai valid, halaman dan beberapa cookie dikembalikan .





Penjelasan rinci ada di situs web pengembang (www.imperva.com)



Menambahkan prosesor javascript, serta solusi lain yang ditawarkan oleh Google (misalnya, meningkatkan server Anda), tampak terlalu rumit / lama. Selenium, ternyata, dengan sempurna melewati perlindungan ini, tetapi karena ada banyak data dan mengumpulkan dalam satu aliran, (atau bahkan beralih antar tab) saya tidak mau, dan tidak ada cukup sumber daya untuk meluncurkan beberapa browser , diputuskan untuk menulis server proxy.



Karena beban berubah, tergantung pada waktu dan kondisi lain, diputuskan untuk membuat komponen web yang dapat diskalakan melalui kombinasi labu Nginx + uwsgi +. Tampaknya terlalu mahal untuk menjalankan versi Selenium bagi setiap pekerja, jadi diputuskan untuk memindahkan Selenium ke layanan terpisah, dengan komunikasi antar blok melalui Redis. Untuk menjaga implementasinya sesederhana mungkin, permintaan dijalankan secara sinkron.





Struktur proyek







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