File size: 7,612 Bytes
5b397d2 c335d2f 5b397d2 c335d2f 5b397d2 c335d2f 5b397d2 779bddd c335d2f 779bddd 5b397d2 c335d2f 5b397d2 c335d2f 779bddd 5b397d2 779bddd c335d2f 779bddd 5b397d2 c335d2f 779bddd 5b397d2 779bddd c335d2f 779bddd 5b397d2 c335d2f 779bddd c335d2f 779bddd c335d2f 779bddd 5b397d2 779bddd c335d2f 779bddd c335d2f 779bddd c335d2f 779bddd c335d2f 5b397d2 779bddd 5b397d2 779bddd c335d2f 779bddd c335d2f 5b397d2 779bddd 5b397d2 779bddd c335d2f 779bddd c335d2f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
/**
* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
* CORREΓΓES HF SPACES - DNS E CONEXΓO WHATSAPP (HARD PATCH)
* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
* Corrige erro: queryA ENODATA / ENOTFOUND web.whatsapp.com
* SoluΓ§Γ£o: Override direto do dns.lookup para ignorar resolvedor do sistema
* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
*/
const dns = require('dns');
const https = require('https');
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// 1. LISTA COMPLETA DE IPs WHATSAPP/GOOGLE EDGE (FALLBACK)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
const WHATSAPP_IPS = [
'142.250.180.14', // Google/WA Edge
'142.250.187.238',
'142.250.79.0',
'172.217.173.238',
'172.217.28.0',
'108.177.14.0',
'142.250.64.110',
'142.250.191.110',
'142.250.190.14',
'142.250.187.206',
'172.217.169.78',
'31.13.92.52', // Meta Edge
'157.240.226.60' // Meta Edge
];
/**
* Retorna um IP aleatΓ³rio da lista para balanceamento
*/
function getWhatsAppIP() {
const index = Math.floor(Math.random() * WHATSAPP_IPS.length);
return WHATSAPP_IPS[index];
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// 2. PATCH CRΓTICO DE DNS (HARD OVERRIDE)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
/**
* Sobrescreve a funΓ§Γ£o dns.lookup nativa do Node.js.
* Isso intercepta as chamadas do Baileys antes que elas toquem na rede.
*/
function patchGlobalDNS() {
const originalLookup = dns.lookup;
dns.lookup = (hostname, options, callback) => {
// Normaliza argumentos (options Γ© opcional no Node.js)
if (typeof options === 'function') {
callback = options;
options = {};
}
// Intercepta domΓnios do WhatsApp
if (hostname === 'web.whatsapp.com' || hostname === 'whatsapp.com' || hostname === 'wss.whatsapp.net') {
const directIP = getWhatsAppIP();
// Retorna sucesso imediatamente com o IP fixo (Family 4 = IPv4)
// console.log(`π‘οΈ [DNS-PATCH] Redirecionando ${hostname} -> ${directIP}`);
return callback(null, directIP, 4);
}
// Para qualquer outro domΓnio (deepgram, google, etc), usa o DNS normal
return originalLookup(hostname, options, callback);
};
console.log('β
DNS Hard-Patch aplicado: web.whatsapp.com forΓ§ado para IPs diretos');
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// 3. AGENTE HTTP OTIMIZADO PARA HF SPACES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
function createHFAgent() {
try {
// Verifica proxy
const proxy = process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.https_proxy;
if (proxy) {
const { HttpsProxyAgent } = require('https-proxy-agent');
console.log('π Usando proxy detectado:', proxy.substring(0, 20) + '...');
return new HttpsProxyAgent(proxy);
}
// Sem proxy: Agente otimizado
return new https.Agent({
keepAlive: true,
keepAliveMsecs: 30000,
timeout: 60000,
maxSockets: 100,
maxFreeSockets: 20,
// CRΓTICO: rejectUnauthorized: false permite conexΓ£o SSL direta no IP
// sem validar se o certificado bate com o "IP" (jΓ‘ que o cert Γ© para o domΓnio)
rejectUnauthorized: false
});
} catch (error) {
console.warn('β οΈ Erro ao criar agente HTTP:', error.message);
return undefined;
}
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// 4. OPΓΓES DE WEBSOCKET (HEADERS ESSENCIAIS)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
function createWebSocketOptions() {
return {
// Headers necessΓ‘rios para enganar o servidor jΓ‘ que estamos conectando via IP
headers: {
'Origin': 'https://web.whatsapp.com',
'Host': 'web.whatsapp.com', // O servidor precisa disso para rotear corretamente (SNI)
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
'Accept': '*/*',
'Accept-Language': 'pt-BR,pt;q=0.9,en;q=0.8',
'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits',
'Sec-WebSocket-Version': '13',
},
handshakeTimeout: 60000, // Timeout aumentado
timeout: 60000,
};
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// 5. VERIFICAΓΓO DE REDE (DUMMY/PASS-THROUGH)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
async function verifyHFNetwork() {
// Com o patch de DNS aplicado, a verificaΓ§Γ£o de rede tradicional Γ© irrelevante
// e pode falhar falsamente. Retornamos true para nΓ£o bloquear o boot.
console.log('π Patch de rede ativo. Ignorando teste de DNS convencional.');
return true;
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// EXPORTAΓΓES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
module.exports = {
configureDNS: () => {
// Configura o patch imediatamente ao ser chamado
const dns = require('dns');
// ForΓ§a ordem IPv4
if (dns.setDefaultResultOrder) {
dns.setDefaultResultOrder('ipv4first');
}
// Aplica o override
patchGlobalDNS();
},
getWhatsAppIP,
createHFAgent,
createWebSocketOptions,
verifyHFNetwork
}; |