Загрузка...

Обход капчи CloudFlare Turnstale в IFRAME

Тема в разделе Node.js создана пользователем N3V3RB0RN 24 апр 2025. 293 просмотра

Загрузка...
  1. N3V3RB0RN
    N3V3RB0RN Автор темы 24 апр 2025 :sueta:
  2. LockBit
    тебе нужно жс заинжектить в iframe до его загрузки?
    JavaScript

    document.querySelector('iframe').window.turnstile = xxx
     
    24 апр 2025 Изменено
    1. Посмотреть предыдущие комментарии (8)
    2. N3V3RB0RN Автор темы
      LockBit,
      VM59:30 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'wasm-unsafe-eval' https://t.me/_websync_ https://telegram.me/_websync_". Either the 'unsafe-inline' keyword, a hash ('sha256-Qd78Emyu2bJ7HgT0RM/RBR8liB2I6TxPXZY/6wkdmJk='), or a nonce ('nonce-...') is required to enable inline execution.
      24 апр 2025 Изменено
    3. N3V3RB0RN Автор темы
      LockBit, Инжектим этот код

      Код
      console.log("Turnstile script loaded.");
      const i = setInterval(() => {
      if (window.turnstile) {
      clearInterval(i);

      // Store the original render method
      const originalRender = window.turnstile.render;

      // Override the render method
      window.turnstile.render = (a, b) => {
      let p = {
      type: "TurnstileTaskProxyless",
      websiteKey: b.sitekey,
      websiteURL: window.location.href,
      data: b.cData,
      pagedata: b.chlPageData,
      action: b.action,
      userAgent: navigator.userAgent,
      };
      console.log("params:")
      console.log(JSON.stringify(p));

      // Call the original render function with provided arguments
      const result = originalRender.call(window.turnstile, a, b);

      // Save the callback
      window.tsCallback = b.callback;

      // Return the result of the original render method
      return result
      };
      }
      }, 1);
      Таким образом

      Код
      driver.get(link)
      iframe = WebDriverWait(driver, 10).until(
      EC.presence_of_element_located((By.TAG_NAME, "iframe"))
      )
      driver.switch_to.frame(iframe)
      with open("i.js", "r", encoding="utf-8") as f:
      inject_js_content = f.read()
      print(inject_js_content)
      driver.execute_script(inject_js_content)
      Он ижектится, потому что в консолии видно строчку console.log("Turnstile script loaded."); всё будто бы нормально, но затем внутри этого не происходит
      Код
      window.turnstile.render = (a, b) => {
      Когда капча не на iframe, а на обычной странице на любом другом сайте с этой капчей, всё нормально, проблема только когда есть iframe.
    4. LockBit
      N3V3RB0RN, потому что вместо window нужно писать document.querySelector('iframe').window, чтобы не к текущей странице подключаться (где нет капчи), а к <iframe>
Top