Guest User

Untitled

a guest
Feb 20th, 2026
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.24 KB | None | 0 0
  1. """
  2. Author: [.2C52.69AD.]
  3. Key (auth= fng^k): 10101 01010 - then -> 01010
  4. :)
  5.  
  6. just automates the manual labor of testing the JE-files that are given as .PDFs but are actually media
  7. like mp4 and avi files. Save for later investigation if desired.
  8.  
  9. You can change headless to True down a little to not disp browser.
  10. """
  11. from playwright.sync_api import sync_playwright, TimeoutError as PlaywrightTimeoutError
  12. import time
  13. from urllib.parse import urlencode
  14. import random
  15.  
  16. SEARCH_TERM = "no images produced"
  17. BASE_URL = "https://www.justice.gov"
  18. SEARCH_PATH = "/multimedia-search"
  19.  
  20. START_PAGE = 1
  21. MAX_PAGES = 10
  22. SKIP_DATASETS = ['DataSet 9']           # skip media testing on these
  23. SKIP_COLLECTING_SKIP_DATASETS = True
  24. MIN_VALID_FILE = 2000          # bytes — filter out junk? probably just rm this + associated code.
  25.  
  26. all_links = []                  # collected PDF links
  27. valid_media = []                # discovered media URLs
  28.  
  29. # JSON capture
  30. captured_json = None
  31.  
  32. with sync_playwright() as p:
  33.     browser = p.chromium.launch(headless=False, slow_mo=150)
  34.     context = browser.new_context(
  35.         viewport={"width": 620, "height": 400},
  36.         user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
  37.         locale="en-US",
  38.         timezone_id="America/New_York",
  39.     )
  40.     page = context.new_page()
  41.  
  42.     print("Visiting main page to establish session / pass Akamai + gates")
  43.     page.goto(BASE_URL + "/epstein", wait_until="networkidle", timeout=60000)
  44.  
  45.     # Robot challenge
  46.     try:
  47.         robot = page.wait_for_selector(
  48.             'input[type="button"][class="usa-button"][value="I am not a robot"][onclick*="reauth()"]',
  49.             timeout=12000
  50.         )
  51.         robot.click()
  52.         page.wait_for_load_state("networkidle", timeout=15000)
  53.         print("Robot challenge passed")
  54.     except PlaywrightTimeoutError:
  55.         pass
  56.     except Exception as e:
  57.         print(f"Robot button failed: {e}")
  58.  
  59.     # Age gate
  60.     try:
  61.         page.wait_for_selector('text=/are you 18|age verification/i', timeout=12000)
  62.         page.click('text=Yes', timeout=8000)
  63.         page.wait_for_load_state("networkidle", timeout=25000)
  64.         print("Age gate passed?")
  65.     except PlaywrightTimeoutError:
  66.         pass
  67.     except Exception as e:
  68.         print(f"Age gate failed: {e}")
  69.  
  70.     time.sleep(2)
  71.  
  72.     def on_response(response):
  73.         global captured_json
  74.         ct = response.headers.get("content-type", "").lower()
  75.         if "application/json" in ct:
  76.             try:
  77.                 data = response.json()
  78.                 if "hits" in data and "hits" in data["hits"]:
  79.                     captured_json = data
  80.                     print(f"Captured JSON — {len(data['hits']['hits'])} hits")
  81.             except:
  82.                 pass
  83.  
  84.     page.on("response", on_response)
  85.  
  86.     # Collect links
  87.     for pg in range(START_PAGE, START_PAGE + MAX_PAGES):
  88.         captured_json = None
  89.         params = {"keys": SEARCH_TERM, "page": pg}
  90.         url = f"{BASE_URL}{SEARCH_PATH}?{urlencode(params)}"
  91.         print(f"Loading page {pg}: {url}")
  92.  
  93.         page.goto(url, wait_until="networkidle", timeout=60000)
  94.         time.sleep(0.2)
  95.  
  96.         if captured_json:
  97.             for hit in captured_json["hits"]["hits"]:
  98.                 src = hit.get("_source", {})
  99.                 uri = src.get("ORIGIN_FILE_URI")
  100.                 if uri:
  101.                     if SKIP_COLLECTING_SKIP_DATASETS and not any(ds in uri for ds in SKIP_DATASETS):
  102.                         clean = uri.replace("\\/", "/")
  103.                         all_links.append(clean)
  104.                         print("  ->", clean)
  105.                     else:
  106.                         print(f"Ignoring skip-list item? -> {uri}")
  107.                 else:
  108.                     name = src.get("ORIGIN_FILE_NAME")
  109.                     if name:
  110.                         print(f"Warning: No URI for {name} — skipped")
  111.         else:
  112.             print("No JSON — snippet:", page.content()[:300])
  113.  
  114.     # Media variant testing
  115.     print("\nTesting media variants...")
  116.     EXTENSIONS = ['.mp4', '.avi', '.wav', '.mov']
  117.  
  118.     for pdf_url in all_links:
  119.         if any(ds in pdf_url for ds in SKIP_DATASETS):
  120.             continue
  121.  
  122.         base = pdf_url.rsplit('.', 1)[0]
  123.         found = False
  124.  
  125.         for ext in EXTENSIONS:
  126.             test_url = base + ext
  127.             try:
  128.                 result = page.evaluate('''async (url) => {
  129.                    try {
  130.                        const res = await fetch(url, {method: 'HEAD', redirect: 'follow'});
  131.                        return {
  132.                            ok: res.ok,
  133.                            status: res.status,
  134.                            contentType: res.headers.get('content-type') || '',
  135.                            length: parseInt(res.headers.get('content-length') || '0', 10)
  136.                        };
  137.                    } catch (e) {
  138.                        return {ok: false};
  139.                    }
  140.                }''', test_url)
  141.  
  142.                 if result.get('ok') and result['status'] == 200:
  143.                     ct = result['contentType'].lower()
  144.                     length = result['length']
  145.                     if length > MIN_VALID_FILE and ('video/' in ct or 'audio/' in ct or 'octet-stream' in ct):
  146.                         print(f"✓ VALID: {test_url} ({ct}, {length:,} bytes)")
  147.                         valid_media.append(test_url)
  148.                         found = True
  149.                         break
  150.             except:
  151.                 pass
  152.  
  153.         if not found:
  154.             print(f"No media: {pdf_url}")
  155.  
  156.         time.sleep(0.8 + random.random() * 1.1)
  157.  
  158.     browser.close()
  159.  
  160. # Save results
  161. if all_links:
  162.     with open("epstein_no_images_links.txt", "w", encoding="utf-8") as f:
  163.         for link in sorted(set(all_links)):
  164.             f.write(link + "\n")
  165.     print(f"\nSaved {len(all_links)} PDF links → epstein_no_images_links.txt")
  166.  
  167. if valid_media:
  168.     with open("epstein_valid_media.txt", "w", encoding="utf-8") as f:
  169.         for url in sorted(set(valid_media)):
  170.             f.write(url + "\n")
  171.     print(f"Saved {len(valid_media)} media files → epstein_valid_media.txt")
  172. else:
  173.     print("\nNo valid media found.")
  174.  
  175. print("Done.")
Advertisement
Add Comment
Please, Sign In to add comment