Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大佬在不在啊 #3

Open
xinkeji opened this issue Feb 5, 2024 · 12 comments
Open

大佬在不在啊 #3

xinkeji opened this issue Feb 5, 2024 · 12 comments

Comments

@xinkeji
Copy link

xinkeji commented Feb 5, 2024

cors代码怎么解决啊,忙了好久,实在用不了

@MHuiG
Copy link
Contributor

MHuiG commented Feb 13, 2024

https://github.com/Zibri/cloudflare-cors-anywhere

代码部署到cloudflare workers

我记得两年前魔改过,不过我忘记改了什么了

https://github.com/MHG-LAB/RSSBOX/blob/main/main.py#L208

@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

我试过了,用不了

@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

可以看下你cf的配置嘛,大佬,实在用不了,完全不显示图

@MHuiG
Copy link
Contributor

MHuiG commented Feb 14, 2024

你可以试着把cors这一段删掉

https://github.com/SMGoro/RSSBOX/blob/main/main.py#L208

@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

不需要防盗链了吗

@MHuiG
Copy link
Contributor

MHuiG commented Feb 14, 2024

这不是防盗链,是hack其他博主的防盗链,哈哈哈哈

@MHuiG
Copy link
Contributor

MHuiG commented Feb 14, 2024

我看另一个大佬把这段删掉还是能用的

https://github.com/SMGoro/RSSBOX

https://goro.top/RSSBOX/

@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

emm,我的意思就是这个,主要不是还有 img["data-src"] = "data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="

遇到这个图片怎么办
我之前把源地址填这个,他可以吧这个替换成cors图片地址,这段去掉了是不是对这个就没有作用了

@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

我有看过,但是感觉没有你的完美…

@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

他可能把一些需要用到cors的网站给删了

@MHuiG
Copy link
Contributor

MHuiG commented Feb 14, 2024

/*
CORS Anywhere as a Cloudflare Worker!
(c) 2019 by Zibri (www.zibri.org)
email: zibri AT zibri DOT org
https://github.com/Zibri/cloudflare-cors-anywhere
*/

/*
whitelist = [ "^http.?://www.zibri.org$", "zibri.org$", "test\\..*" ];  // regexp for whitelisted urls
*/

blacklist = [];           // regexp for blacklisted urls
whitelist = [".*"];     // regexp for whitelisted origins

function isListed(uri, listing) {
  var ret = false;
  if (typeof uri == "string") {
    listing.forEach((m) => {
      if (uri.match(m) != null) ret = true;
    });
  } else {            //   decide what to do when Origin is null
    ret = true;    // true accepts null origins false rejects them.
  }
  return ret;
}



addEventListener("fetch", async event => {
  
  event.respondWith((async function () {
    isOPTIONS = (event.request.method == "OPTIONS");
    var origin_url = new URL(event.request.url);
    const urlStr = event.request.url
    const urlObj = new URL(urlStr)
    const path = urlObj.href.substr(urlObj.origin.length)
    
    function fix(myHeaders) {
      //            myHeaders.set("Access-Control-Allow-Origin", "*");
      myHeaders.set("Access-Control-Allow-Origin", event.request.headers.get("Origin"));
      if (isOPTIONS) {
        myHeaders.set("Access-Control-Allow-Methods", event.request.headers.get("access-control-request-method"));
        acrh = event.request.headers.get("access-control-request-headers");
        //myHeaders.set("Access-Control-Allow-Credentials", "true");

        if (acrh) {
          myHeaders.set("Access-Control-Allow-Headers", acrh);
        }

        myHeaders.delete("X-Content-Type-Options");
      }
      return myHeaders;
    }
    var fetch_url = decodeURIComponent(decodeURIComponent(urlObj.searchParams.get('url')));
    let r = urlObj.searchParams.get('r')
    console.log("fetch_url: " + fetch_url);
    console.log("r: " + r);


    var orig = event.request.headers.get("Origin");

    var remIp = event.request.headers.get("CF-Connecting-IP");

    if ((!isListed(fetch_url, blacklist)) && (isListed(orig, whitelist))) {

      xheaders = event.request.headers.get("x-cors-headers");

      if (xheaders != null) {
        try {
          xheaders = JSON.parse(xheaders);
        } catch (e) { }
      }

      if (origin_url.search.startsWith("?")) {
        recv_headers = {};
        for (var pair of event.request.headers.entries()) {
          if ((pair[0].match("^origin") == null) &&
            (pair[0].match("eferer") == null) &&
            (pair[0].match("^cf-") == null) &&
            (pair[0].match("^x-forw") == null) &&
            (pair[0].match("^x-cors-headers") == null)
          ) recv_headers[pair[0]] = pair[1];
        }

        if (xheaders != null) {
          Object.entries(xheaders).forEach((c) => recv_headers[c[0]] = c[1]);
        }

        if (r) recv_headers["referer"] = r;

        newreq = new Request(event.request, {
          "headers": recv_headers
        });

        var response = await fetch(fetch_url, newreq);
        var myHeaders = new Headers(response.headers);
        cors_headers = [];
        allh = {};
        for (var pair of response.headers.entries()) {
          cors_headers.push(pair[0]);
          allh[pair[0]] = pair[1];
        }
        cors_headers.push("cors-received-headers");
        myHeaders = fix(myHeaders);

        myHeaders.set("Access-Control-Expose-Headers", cors_headers.join(","));

        myHeaders.set("cors-received-headers", JSON.stringify(allh));

        if (isOPTIONS) {
          var body = null;
        } else {
          var body = await response.arrayBuffer();
        }

        var init = {
          headers: myHeaders,
          status: (isOPTIONS ? 200 : response.status),
          statusText: (isOPTIONS ? "OK" : response.statusText)
        };
        return new Response(body, init);

      } else {
        var myHeaders = new Headers();
        myHeaders = fix(myHeaders);

        if (typeof event.request.cf != "undefined") {
          if (typeof event.request.cf.country != "undefined") {
            country = event.request.cf.country;
          } else
            country = false;

          if (typeof event.request.cf.colo != "undefined") {
            colo = event.request.cf.colo;
          } else
            colo = false;
        } else {
          country = false;
          colo = false;
        }
        return Response.redirect("https://mhuigxxxx.top/", 301);
      }
    } else {
      return Response.redirect("https://mhuigxxxxx.top/", 301);
    }
  }
  )());
});

/***************************************************************************************************** */



@xinkeji
Copy link
Author

xinkeji commented Feb 14, 2024

谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants