const { connect } = require('puppeteer-real-browser'); async function getTempMail() { console.log('Launching browser...'); const { browser, page } = await connect({ headless: 'auto', args: ['--no-sandbox', '--disable-setuid-sandbox'], turnstile: true }); try { console.log('Navigating to tmailor.com...'); await page.goto('https://tmailor.com', { waitUntil: 'networkidle2', timeout: 60000 }); console.log('Initial page load complete. Waiting...'); await new Promise(resolve => setTimeout(resolve, 3000)); console.log('Looking for Turnstile iframe to solve...'); async function solveTurnstile() { const frames = page.frames(); for (const frame of frames) { const url = frame.url(); console.log('Frame URL:', url); if (url.includes('turnstile') || url.includes('challenges.cloudflare')) { console.log('Found Turnstile challenge frame!'); try { await new Promise(resolve => setTimeout(resolve, 2000)); const checkbox = await frame.$('input[type="checkbox"]'); if (checkbox) { console.log('Clicking Turnstile checkbox...'); await checkbox.click(); return true; } const verifyButton = await frame.$('[id*="verify"], [class*="verify"], button'); if (verifyButton) { console.log('Clicking verify button in frame...'); await verifyButton.click(); return true; } } catch (e) { console.log('Error in Turnstile frame:', e.message); } } } return false; } let turnstileSolved = await solveTurnstile(); if (turnstileSolved) { console.log('Turnstile interaction attempted, waiting for verification...'); await new Promise(resolve => setTimeout(resolve, 8000)); } console.log('Checking for Confirm link on page...'); const confirmButtons = await page.$$('a[title*="verify"], a[href*="firewall"], button'); for (const btn of confirmButtons) { const text = await page.evaluate(el => el.textContent, btn); if (text && text.toLowerCase().includes('confirm')) { console.log('Found Confirm button, clicking...'); await btn.click(); await new Promise(resolve => setTimeout(resolve, 5000)); turnstileSolved = await solveTurnstile(); if (turnstileSolved) { await new Promise(resolve => setTimeout(resolve, 8000)); } break; } } console.log('Looking for New Email button...'); const buttons = await page.$$('button, a'); for (const btn of buttons) { const text = await page.evaluate(el => el.textContent, btn); if (text && text.includes('New Email')) { console.log('Found New Email button, clicking...'); await btn.click(); await new Promise(resolve => setTimeout(resolve, 3000)); break; } } console.log('Waiting for email to appear...'); await new Promise(resolve => setTimeout(resolve, 5000)); let email = null; console.log('Searching for email in page...'); const allText = await page.evaluate(() => document.body.innerText); const emailPatterns = allText.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g); if (emailPatterns) { const filtered = emailPatterns.filter(e => !e.includes('gmail.com') && !e.includes('tmailor.com@') && !e.toLowerCase().includes('support') ); if (filtered.length > 0) { email = filtered[0]; console.log('Found email in page text:', email); } } if (!email) { const emailSelectors = [ '#email', '#tempmail', '.email-address', '[data-email]', 'input[readonly]', 'input[type="text"]', '.copy-text', 'code', 'pre' ]; for (const selector of emailSelectors) { try { const elements = await page.$$(selector); for (const element of elements) { const value = await page.evaluate(el => { return el.value || el.textContent || el.getAttribute('data-email') || el.getAttribute('data-clipboard-text'); }, element); if (value && value.includes('@') && !value.includes('gmail')) { email = value.trim(); console.log(`Found email with selector "${selector}": ${email}`); break; } } if (email) break; } catch (e) {} } } console.log('\nTaking screenshot...'); await page.screenshot({ path: 'tmailor-screenshot.png', fullPage: true }); console.log('Screenshot saved to tmailor-screenshot.png'); console.log('\n=== RESULT ==='); if (email && email.includes('@')) { console.log('SUCCESS! Temp Email:', email); } else { console.log('Could not find a temp email address'); console.log('\n--- Page visible text (first 1500 chars) ---'); console.log(allText.substring(0, 1500)); } return email; } catch (error) { console.error('Error:', error.message); } finally { await browser.close(); console.log('Browser closed.'); } } getTempMail();