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
- Clique neste botão:
- Preencha as variáveis de configuração e clique
Deploy
- Abra o
Heroku Scheduler
do painel da sua aplicação - 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/
- Intercepção de pedidos irá registar todas as tentativas de carregamento de URL e aceitar todos os pedidos.
-
slowmo
está activado eheadless
está desactivado -
será aberto antes de um URL Sudoeste
li>Use CHROME_DEBUG=true DEBUG="puppeteer:*"
combinado com node inspect
para depurar estranhos problemas de cromo.
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