Ignorando a Incapsula com selênio

O cliente resolveu, com um problema que o seu cobrador não consegue lidar com a protecção "incapsula".

Em suma, em vez do código da página, um código javascript é retornado, quando executado, uma solicitação é feita aos encapsulamentos do servidor, alguns parâmetros do navegador são verificados e, se o navegador for reconhecido como válido, a página e alguns cookies são retornados .





Uma descrição detalhada está no site do desenvolvedor (www.imperva.com)



Adicionar um processador javascript, bem como outras soluções oferecidas pelo Google (por exemplo, aumentar seus servidores), parecia muito complicado / longo. Selenium, como se viu, ignora perfeitamente essa proteção, mas como há muitos dados e coleta em um fluxo (ou mesmo alternando entre as guias), eu não queria e não havia recursos suficientes para iniciar vários navegadores , decidiu-se escrever um servidor proxy.



Como a carga mudava, dependendo da hora do dia e outras condições, decidiu-se fazer uma web part escalonável por meio da combinação de Nginx + uwsgi + frasco. Parecia muito caro executar a versão do Selenium para cada trabalhador, então foi decidido mover o Selenium para um serviço separado, com comunicação entre blocos via Redis. Para manter a implementação o mais simples possível, as solicitações são executadas de forma síncrona.





Estrutura do projeto







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