autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
#!/usr/bin/env python3
"""
Firecrawl 100-Account Farmer
Run locally: python firecrawl_farmer.py 15 100
Uses your existing Chrome profile (no Cloudflare issues)
"""
import asyncio, imaplib, email, re, time, sys
from playwright.async_api import async_playwright
IMAP_EMAIL = "[REDACTED-NAME]@gmail.com"
IMAP_PASS = "IMAP_APP_PASSWORD"
PASSWORD = "[REDACTED]"
PROMO = "THESKIP"
BASE = "[REDACTED-NAME]"
SIGNUP = "https://www.firecrawl.dev/signin?view=signup"
def get_link(email_addr, timeout=15):
deadline = time.time() + timeout
while time.time() < deadline:
try:
mail = imaplib.IMAP4_SSL("imap.gmail.com")
mail.login(IMAP_EMAIL, IMAP_PASS)
mail.select("INBOX")
s, msgs = mail.search(None, f'TO "{email_addr}"')
if s == "OK" and msgs[0]:
mid = msgs[0].split()[-1]
_, d = mail.fetch(mid, "(RFC822)")
msg = email.message_from_bytes(d[0][1])
body = ""
if msg.is_multipart():
for p in msg.walk():
if p.get_content_type() == "text/html":
body = p.get_payload(decode=True).decode(errors='ignore')
break
for l in re.findall(r'https?://[^\s"<>]+', body):
if 'verify' in l or 'confirm' in l:
mail.logout(); return l.replace('&amp;','&')
mail.logout()
except: pass
time.sleep(2)
return None
async def farm(page, n):
email = f"{BASE}+firecrawl{n}@gmail.com"
print(f"[{n}] {email}")
try:
await page.goto(SIGNUP, timeout=30000)
await page.wait_for_timeout(2000)
await page.fill('input[type="email"]', email)
await page.fill('input[type="password"]', PASSWORD)
await page.click('button[type="submit"]')
await page.wait_for_url("**/confirm-email**", timeout=15000)
except: return None
link = get_link(email, timeout=20)
if not link: return None
try:
await page.goto(link, timeout=15000)
await page.wait_for_timeout(2000)
await page.goto("https://www.firecrawl.dev/app", timeout=30000)
await page.wait_for_selector('text=Show key', timeout=10000)
await page.click('text=Show key')
await page.wait_for_timeout(500)
key = await page.evaluate("() => document.body.innerText.match(/fc-[a-zA-Z0-9]{30,50}/)?.[0]")
if not key: return None
team_url = page.url
await page.goto(team_url + "/settings?tab=billing", timeout=15000)
await page.wait_for_timeout(1000)
await page.fill('input', PROMO)
await page.wait_for_timeout(300)
await page.click('text=Apply')
await page.wait_for_timeout(2000)
print(f"[{n}] DONE {key}")
return key
except: return None
async def main():
start = int(sys.argv[1]) if len(sys.argv) > 1 else 15
count = int(sys.argv[2]) if len(sys.argv) > 2 else 100
results = {}
async with async_playwright() as p:
browser = await p.chromium.launch_persistent_context("", headless=False, channel="chrome")
page = await browser.new_page()
for n in range(start, start + count):
key = await farm(page, n)
if key: results[n] = key
await browser.close()
with open("firecrawl_100_keys.txt", "w") as f:
for n, key in sorted(results.items()):
f.write(f"{BASE}+firecrawl{n}@gmail.com|{key}|THESKIP\n")
print(f"\nDONE: {len(results)}/{count}")
if __name__ == "__main__":
asyncio.run(main())