Executando

Ajuste Proxy Python

Publicado em 31 de Agosto de 2024 dias na TI e Programação

Sobre este projeto

Aberto

O projeto é em Python usando docker compose e celery, a autenticação deve se dar usando o Selenium em modo headless, contendo esses argumentos abaixo.

Options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

O objetivo é fazer ele rodar o login/autenticação da página do Instagram usando os proxys do Brasil (deve ter um espaço para colocar os dados dos proxys, como usuário, senha, host e ip), e ter um campo onde eu diga de quanto em quanto tempo ele vai fazer a rotação desses proxys, exemplo a cada 1 dia (24h) ele usa um, depois outro, etc.

Porque isso? Porque se eu colocar esse código em um servidor de hospedagem por exemplo nos EUA, ele vai dar problema para autenticar um Instagram do Brasil, com isso ele deve usar proxys do Brasil para não ter problema na hora de autenticar, mesmo estando hospedado em um servidor nos EUA.

O proxy é em http/socks5
exemplo (aqui terá mais de um ip, consequentemente terá mais de um username, password e porta)
# informações do proxy
proxy_host = ""
proxy_port = ""
proxy_username = ""
proxy_password = ""

proxy_options = {
    'proxy': {
        'http': f'socks5://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}',
        'https': f'socks5://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}',
        'no_proxy': 'localhost,127.0.0.1'  # Adjust as needed
    }
}

Imagem do Selenium que deve ser usado no Docker Compose (docker-compose.yml - que é a mesma que já é usada no restante do projeto)
  selenium:
    image: selenium/standalone-chrome:latest
    ports:
      - "4444:4444"
   
exemplo de task de autenticação (provavelmente será incluso uma função adicional que será chamada dentro dessa task para usar o proxy)

@shared_task(bind=true)
def login_autenticacao_task(self, username, password, user_id):
    logger.info(f"Task ID is {self.request.id}")  # Log the task ID

    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')

    try:
        # options = proxy_options()

        navegador = webdriver.Remote(
            command_executor='http://selenium:4444/wd/hub',
            options=options
        )
        print(f"Tentando acessar Instagram com o usuário {username}.")

        # Verificar IP e localização
        navegador.get("http://ipinfo.io")
        time.sleep(5)
        ip_info = navegador.find_element(By.TAG_NAME, "body").text
        print(f"IP e localização: {ip_info}")

        caminho_arquivo = os.path.join(settings.BASE_DIR, "print_autentica_proxy1.png")
        navegador.save_screenshot(caminho_arquivo)
        logger.error(f"Captura de tela salva em {caminho_arquivo}")

        navegador.get("https://www.instagram.com/")
        time.sleep(10)

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Não se aplica
Disponibilidade requerida Conforme necessário
Funções necessárias Outro

Prazo de Entrega: Não estabelecido

Habilidades necessárias