עצה וויאזוי צו באזוכן קרעמל אפילו מיט א פילטער

פנחס

היימישער קרעמלער
זיך איינגעשריבן
נאוו. 24, 2025
מעסעדזשעס
48
רעאקציע ראטע
96
פונקטן
18
לעצטע פאר חדשים האב איך אנגעהויבן ניצן קרעמל מיט א reverse proxy אויף א cloudflare worker

  1. גיי צו dash.cloudflare.com לאג אריין אין דיין אקאונט
  2. וועל אויס די אקאונט ווי דו ווילסט עס מאכן אויף
  3. אויף די לינקע זייט אונטער Build דריק compute דערנאך workers & pages
  4. דריק אויף create application
  5. וועל אויס א נאמען פאר די worker (קענסט לאזן די דיפאלט)
  6. דריק start with hello world
  7. דריק deploy
  8. דריק visit
  9. בעט דיין פילטער זאל עס עפענען - ווארט זיי זאלן עס עפענען
  10. דריק edit code
  11. פעיסט אריין די קאוד וואס איך ברענג דא אונטען
  12. טויש your_worker_domain צו די דאומעין וואס האסט געבעטן דיין פילטער צו עפענען (4דע ליין)
  13. דריק deploy

נ.ב. איך בין נישט קיין אייטי אדער סיי וואס איך האב פלעין געפאלגט עפעס א עי איי (איך געדענק שוין נישט וועלכע)
זאלן די קרעמלער וואס ווייסן וואס איך האב געטון אריינקומען ערקלערן

קאוד:
export default {
  async fetch(request) {
    const EXTERNAL_SITE = "kraimel.community.forum";
    const WORKER_DOMAIN = "your_worker_domain";

    const url = new URL(request.url);
    url.hostname = EXTERNAL_SITE;

    const newRequest = new Request(url, request);
    newRequest.headers.set("Host", EXTERNAL_SITE);

    let response = await fetch(newRequest);

    // 1. CLONE HEADERS
    let newHeaders = new Headers(response.headers);

    // 2. FIX REDIRECTS (Location Header)
    let location = newHeaders.get("Location");
    if (location) {
      newHeaders.set("Location", location.replace(EXTERNAL_SITE, WORKER_DOMAIN));
    }

    // 3. FIX COOKIES (Set-Cookie Header)
    const setCookie = newHeaders.get("Set-Cookie");
    if (setCookie) {
      newHeaders.set("Set-Cookie", setCookie.replace(new RegExp(EXTERNAL_SITE, 'g'), WORKER_DOMAIN));
    }

    // 4. PREVENT HSTS REDIRECTS
    newHeaders.delete("Strict-Transport-Security");

    // 5. CONTENT REWRITING
    const contentType = response.headers.get("Content-Type") || "";
    if (contentType.includes("text/html")) {
      let transformedResponse = new HTMLRewriter()
        .on("a", new AttributeRewriter("href", EXTERNAL_SITE, WORKER_DOMAIN))
        .on("form", new AttributeRewriter("action", EXTERNAL_SITE, WORKER_DOMAIN))
        .on("script", new AttributeRewriter("src", EXTERNAL_SITE, WORKER_DOMAIN))
        .on("img", new AttributeRewriter("src", EXTERNAL_SITE, WORKER_DOMAIN))
        .on("img", new AttributeRewriter("srcset", EXTERNAL_SITE, WORKER_DOMAIN))
        .on("source", new AttributeRewriter("srcset", EXTERNAL_SITE, WORKER_DOMAIN))
        .transform(response);

      return new Response(transformedResponse.body, {
        status: response.status,
        headers: newHeaders
      });
    }

    // Handle JS/JSON text replacement
    if (contentType.includes("javascript") || contentType.includes("json")) {
      let text = await response.text();
      let modifiedText = text.replace(new RegExp(EXTERNAL_SITE, 'g'), WORKER_DOMAIN);
      return new Response(modifiedText, { headers: newHeaders });
    }

    return new Response(response.body, { headers: newHeaders });
  }
};

class AttributeRewriter {
  constructor(attributeName, oldVal, newVal) {
    this.attributeName = attributeName;
    this.oldVal = oldVal;
    this.newVal = newVal;
  }
  element(element) {
    const attribute = element.getAttribute(this.attributeName);
    if (attribute) {
      element.setAttribute(this.attributeName, attribute.replace(new RegExp(this.oldVal, 'g'), this.newVal));
    }
  }
}
 
לעצט רעדאגירט:
מיט וועלכע פילטער ארבעט עס?
 
Back
Top