// ==UserScript==
// @name Processos Schengen 6 Beto • Versão Bot Avançado
// @namespace [Link]
// @version 6.3
// @description Bot avançado para preenchimento automático, monitoramento de slots e
agendamento.
// @author NORITRADESTAR
// @match [Link]
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Dados dos perfis com valores aleatórios ou não sensíveis
const perfis = [
{ nome: "Schengen", primeiroNome: "João", ultimoNome: "Silva", dataNascimento: "11/05/1990",
numeroPassaporte: "X1234567", dataExpiracaoPassaporte: "01/09/2030", telefone: "945298308",
email: "[Link]@[Link]", codigoPais: "244" },
{ nome: "Schengen", primeiroNome: "Maria", ultimoNome: "Oliveira", dataNascimento:
"11/01/1985", numeroPassaporte: "X1234568", dataExpiracaoPassaporte: "14/03/2035", telefone:
"945296708", email: "[Link]@[Link]", codigoPais: "244" },
{ nome: "Schengen", primeiroNome: "Carlos", ultimoNome: "Pereira", dataNascimento:
"01/04/1978", numeroPassaporte: "X1234569", dataExpiracaoPassaporte: "05/06/2040", telefone:
"945468308", email: "[Link]@[Link]", codigoPais: "244" },
];
// Mapeamento dos campos no formulário
const campos = {
primeiroNome: "input[placeholder='Enter your first name']",
ultimoNome: "input[placeholder='Please enter last name.']",
dataNascimento: "input[placeholder='Please select the date']",
numeroPassaporte: "input[placeholder='Enter passport number']",
dataExpiracaoPassaporte: "#passportExpirtyDate",
telefone: "input[placeholder='012345648382']",
email: "input[placeholder='Enter Email Address']",
codigoPais: "input[placeholder='44']"
};
let monitorando = false; // Status do monitoramento
const logEventos = []; // Registro de eventos
let botaoMinMax = null; // Botão de maximizar/minimizar
let containerBot = null; // Contêiner do bot
// Função para validar o formato de e-mail
const validarEmail = (email) => {
const regexEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return [Link](email);
};
// Função para validar o número de telefone
const validarTelefone = (telefone) => {
const regexTelefone = /^\d{9}$/;
return [Link](telefone);
};
// Função para preencher o formulário
const preencherFormulario = (perfil) => {
if (!validarEmail([Link])) {
alert("E-mail inválido para " + [Link]);
return;
if (!validarTelefone([Link])) {
alert("Número de telefone inválido para " + [Link]);
return;
[Link](campos).forEach((campo) => {
const seletor = campos[campo];
const elemento = [Link](seletor);
if (elemento) {
[Link] = perfil[campo];
[Link](new Event('change', { bubbles: true }));
});
adicionarLog(`Formulário preenchido para ${[Link]} ${[Link]}`);
};
// Adiciona um evento ao log
const adicionarLog = (mensagem) => {
const logContainer = [Link]('logEventos');
const evento = [Link]('div');
[Link] = `${new Date().toLocaleTimeString()} • ${mensagem}`;
[Link](evento);
[Link] = [Link];
};
// Função para verificar a mensagem de disponibilidade
const verificarMensagemDisponibilidade = () => {
const elementoMensagem = [Link]("[Link]-info");
if (elementoMensagem) {
const mensagem = [Link]();
adicionarLog(`Mensagem capturada: ${mensagem}`);
const regexData = /\d{2}-\d{2}-\d{4}/;
const dataDisponivel = [Link](regexData);
if (dataDisponivel) {
adicionarLog(`Próxima data disponível encontrada: ${dataDisponivel[0]}`);
alert(`Nova data disponível: ${dataDisponivel[0]}`);
// Preenche o formulário automaticamente com o primeiro perfil
preencherFormulario(perfis[0]);
} else {
adicionarLog("Nenhuma data disponível encontrada na mensagem.");
} else {
adicionarLog("Mensagem de disponibilidade não encontrada.");
setTimeout(verificarMensagemDisponibilidade, 5000);
};
// Função para exportar logs
const exportarLogs = () => {
const logs = [Link]('logEventos').textContent;
const blob = new Blob([logs], { type: "text/plain" });
const link = [Link]('a');
[Link] = [Link](blob);
[Link] = "[Link]";
[Link]();
adicionarLog("Logs exportados com sucesso.");
};
// Função para alternar entre maximizar e minimizar a interface
const alternarVisibilidade = () => {
if ([Link] === "40px" || [Link] === "") {
[Link] = "300px";
[Link] = "Minimizar";
} else {
[Link] = "40px";
[Link] = "Maximizar";
};
// Criação de botões flutuantes
const criarInterfaceBot = () => {
containerBot = [Link]('div');
[Link] = "botContainer";
[Link] = `
position: fixed;
top: 10%;
right: 10px;
width: 300px;
background: rgba(255, 255, 255, 0.9);
border: 1px solid #ccc;
padding: 10px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
z-index: 10000;
height: auto;
transition: width 0.3s;
max-width: 95%; /* Ajusta para dispositivos móveis */
`;
const titulo = [Link]('h4');
[Link] = "Bot de Agendamento Avançado";
[Link] = "margin: 0; text-align: center; color: #333;";
[Link](titulo);
[Link]((perfil) => {
const botao = [Link]('button');
[Link] = `Preencher: ${[Link]}`;
[Link] = `
display: block;
width: 100%;
margin: 5px 0;
padding: 10px;
background: #4CAF50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
text-align: center;
`;
[Link]('click', () => preencherFormulario(perfil));
[Link](botao);
});
const botaoMonitorarMensagem = [Link]('button');
[Link] = "Monitorar Mensagem de Disponibilidade";
[Link] = `
display: block;
width: 100%;
margin: 10px 0;
padding: 10px;
background: #007BFF;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
`;
[Link]('click', () => {
adicionarLog("Monitoramento de mensagem de disponibilidade iniciado.");
verificarMensagemDisponibilidade();
});
[Link](botaoMonitorarMensagem);
const botaoExportar = [Link]('button');
[Link] = "Exportar Logs";
[Link] = `
display: block;
width: 100%;
margin: 10px 0;
padding: 10px;
background: #FF5733;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
`;
[Link]('click', exportarLogs);
[Link](botaoExportar);
botaoMinMax = [Link]('button');
[Link] = "Minimizar";
[Link] = `
display: block;
width: 100%;
margin: 10px 0;
padding: 10px;
background: #FFC107;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
`;
[Link]('click', alternarVisibilidade);
[Link](botaoMinMax);
const logContainer = [Link]('div');
[Link] = "logEventos";
[Link] = `
margin-top: 10px;
padding: 10px;
background: #f9f9f9;
border: 1px solid #ccc;
height: 150px;
overflow-y: auto;
font-size: 12px;
color: #333;
`;
[Link](logContainer);
[Link](containerBot);
};
// Inicialização do script
[Link]('load', criarInterfaceBot);
})();