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, , , . . , .