samyun / southwest-price-drop-bot

Versões implantadas antes de 6/30/2019 (< 3.4.0) pode querer fazer uma implantação limpa – estamos a mudar de Redis para MongoDB, e não traduz, de forma limpa. Isto é capaz de funcionar localmente durante o desenvolvimento de forma algo consistente.

Southwest Price Drop Bot

Esta ferramenta permite-lhe monitorizar o preço dos voos do Sudoeste que reservou. Notificá-lo-á se o preço descer abaixo do que pagou inicialmente. Depois poderá voltar a reservar o mesmo voo e obter crédito da Southwest pela diferença de preço. Esta ferramenta também lhe permite monitorizar o preço de todos os voos do Sudoeste num determinado dia. Irá notificá-lo se algum voo nesse dia descer abaixo do voo anterior mais barato.

Nota que precisa de ter uma conta Plivo para enviar as notificações de mensagem de texto e uma conta Mailgun para enviar as notificações por e-mail. Pode executar esta ferramenta sem estas contas, mas não receberá as notificações.

P>Pode iniciar sessão com:

A segunda opção é agradável ao dar acesso a amigos e familiares, uma vez que apenas exibirá alertas para o nome de utilizador dado. Note que a senha é a mesma para todas as contas, e o administrador pode ver todos os alertas.

Ao criar alertas, note que o e-mail e os números de telefone são opcionais. Se ambos forem deixados em branco, o utilizador terá de iniciar sessão manualmente para ver descidas de preços.

Implantação

  1. Clique neste botão:
  2. Preencha as variáveis de configuração e clique Deploy
  3. Abra o Heroku Scheduler do painel da sua aplicação
  4. Adicionar uma tarefa de hora a hora que corre npm run task:check

Quando as actualizações se tornam disponíveis, terá de ser você mesmo a implementá-los utilizando o CLI de Heroku. Este aplicativo segue o SemVer na sua versão, por isso certifique-se de ler as notas de lançamento ao implementar uma grande mudança de versão.

Nota: As versões implementadas antes de 4/9/2018 utilizando Mailgun terão de verificar constantes: MAILGUN_DOMAIN e MAILGUN_EMAIL.

Nota: Versões implantadas antes de 21/07/2018 (< 3.2.0) em Heroku terá de verificar o PROXY constante se quiser usar um proxy para fazer as chamadas.

Screenshots

Protecção da Garrafa do Sudoeste

P>Preciso agora, O Sudoeste está a bloquear com sucesso os pedidos deste projecto.

Sudoeste tem algumas protecções de bot muito chiques no lugar.

  • Os IPs de Heroku, e outros fornecedores de alojamento, estão bloqueados de aceder ao seu site. As instalações locais devem ser autorizadas a aceder ao seu sítio, e alguns outros fornecedores de cloud computing também podem funcionar. A solução mais fiável é utilizar um serviço de proxy residencial.
  • Há também algum Javascript complicado e ofuscado que detecta navegadores sem cabeça e é actualizado com muita frequência. Há uma comunidade de pessoas que implementam evasões de detecção de cromo sem cabeça, mas é um jogo de gato e rato.
    • https//github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth/
  • li>Use CHROME_DEBUG=true DEBUG="puppeteer:*" combinado com node inspect para depurar estranhos problemas de cromo.

    • Intercepção de pedidos irá registar todas as tentativas de carregamento de URL e aceitar todos os pedidos.
    • slowmo está activado e headless está desactivado
    • será aberto antes de um URL Sudoeste

Informação de proxy

Instruções sobre a implementação de um proxy está fora do âmbito deste projecto. Contudo, eis algumas informações sobre proxies que podem ser úteis:

  • Um proxy hospedado (barato) que funciona é https://luminati.io. É menos de $1 por mês e parece fiável. A maioria dos procuradores públicos não parece funcionar, imagino que exista algum tipo de lista de blocos de procuradores públicos que esteja no lugar.
  • Podia-se usar algo como lula e girar para cima nativamente, num contentor, ou num VM. Obviamente que vai querer fazer isto fora de Heroku
  • Se usar o Squid, vai querer configurar o reencaminhamento de portas ou correr numa porta altamente aleatória, e bloquear squid.conf com algo como isto para impedir alguém de usar a sua configuração como um proxy aberto:
acl swa dstdomain .southwest.comhttp_access allow swahttp_access deny all

Desenvolvimento

Para executar o conjunto de teste:

yarn test

Para executar uma consola carregada com Alert e Flight objectos:

yarn console

Quando depurar problemas de cromo/fantoche, é útil usar o seguinte comando:

DEBUG="puppeteer:*" CHROME_DEBUG=true node tasks/check.js

Isto enviará uma saída útil de depuração de crómio para a sua consola, e permitirá alguma adição para ajudar a depurar o que possa estar a correr mal.

Histórico de versões

– 2019-08-11

  • Uptimizar dependências, incluindo fios.lock
  • Atualizar para Nó v12

– 2019-06-30

    >li>Move from Redis to MongoDB

  • Atualizar lógica de raspagem
  • Impromover suporte de proxy
  • Adicionar algumas medidas de detecção anti-loteamento
  • Bem agradecimentos a @iloveitaly por estas alterações!

– 2018-12-25

  • Adicionar suporte para voos de prémios (pontos)
  • Dependências actualizadas às versões mais recentes

– 2018-7-23

    >li>Merge PR de @GC-Guy para fixar o suporte de proxy em verificações

– 2018-7-21

    >li>Merge PR de @GC-Guy para adicionar suporte para um proxy

– 2018-7-14

  • Update package.json
  • li>Merge PR de @evliu para orientar os itens da lista de preços de forma mais dinâmica

– 2018-6-14

    >li>Flight data loaded after page is loaded – added wait for .selector de paragens de vooli>Mudar URL para o formato actualTeste de Fix para lidar com o caso de não ter sido encontrado nenhum preço>Adicionar testes para entradas esperadas de má qualidade

– 2018-5-24

    Adicionar teste de unidade para Alertas

  • Adicionar registo adicional e tratamento de erros
  • Tentativa de reduzir o uso de memória através de chamadas manuais:em branco antes de fechar página
  • Adicionar protocolo ao link de e-mail

– 2018-5-4

  • Bug com crash quando o e-mail ou número de telefone não está definido mas o respectivo serviço está activado
  • Adicionar semáforo para limitar o número de páginas abertas de uma só vez – esperançosamente corrigindo o “Erro”: Erro “Página bloqueada”. Limitado a 5 páginas. Por defeito, 5 páginas de uma só vez – definir ENV.MAX_PAGES para alterar.

– 2018-4-29

  • Adicionar verificações para erro inválido
  • Adicionar barras de notificação para parâmetros inválidos

– 2018-4-28

  • Evitar múltiplas instâncias do navegador durante a tarefa:check – reduce memory usage
  • Add nodejs buildpack for Heroku deployment

– 2018-4-28

    li>Refactor para apoiar o redesenho actualizado do sítio Sudoeste, substituir a osmose por titereiro

– 2018-4-14

    Adicionar suporte para verificação do voo mais barato de um dia

– 2018-4-9

    Integração de alterações a montante da PetroccoCo (tratamento de e-mails) e pmschartz (redesign)

– 2017-12-2

    li>Suporte Mailgun e Plivo (e-mail e sms)

– 2017-11-30

    Suporte Mailgun
    li>Trabalho principal

Atribuição

Este é um garfo de garfo de minamhere do garfo de maverick915 do projecto original do scott113341.

As alterações de downstream foram integradas de:

  • PetroccoCo – Email Handling
  • pmschartz – Redesign

P> Agradecimentos às seguintes pessoas pelas suas contribuições:

  • @evliu – direccionar os itens da lista de preços de forma mais dinâmica
  • @GC-Guy – suporte de proxy
  • @iloveitaly – MongoDB, suporte de raspagem/proxy actualizado, detecção anti-bot
  • @ribordy – lodash fix

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *