全球主机交流论坛

标题: 【已解决】如何使用 cloudflare worker 反代 FB 且可以登录 [打印本页]

作者: 史上第一    时间: 2020-10-1 07:50
标题: 【已解决】如何使用 cloudflare worker 反代 FB 且可以登录
本帖最后由 史上第一 于 2020-10-4 02:34 编辑

RT,付费 2000 求教,有会的 PM 我

要求能实现登陆,并且不同的员工可以登陆自己的账号。

机场之类的不稳哈,还会影响电脑的网络,哪怕设置了规则也很烦。

付费求教实现方法,2000跟大佬交个朋友。
作者: tufu001    时间: 2020-10-1 08:05
1000可以买火箭了
作者: ymcoming    时间: 2020-10-1 08:07
1000买机场不香吗?
作者: 史上第一    时间: 2020-10-1 08:09
付费2000
作者: 回忆    时间: 2020-10-1 08:32
// 替换成你想镜像的站点 const upstream = 'google.com'   // 如果那个站点有专门的移动适配站点,否则保持和上面一致 const upstream_mobile = 'm.google.com'   // 密码访问   const openAuth = false const username = 'username' const password = 'password'   // 你希望禁止哪些国家访问 const blocked_region = ['RU']   // 禁止自访问 const blocked_ip_address = ['0.0.0.0', '127.0.0.1']   // 替换成你想镜像的站点 const replace_dict = {     '$upstream': '$custom_domain',     '//google.com': '' }   function unauthorized() {   return new Response('Unauthorized', {     headers: {       'WWW-Authenticate': 'Basic realm="goindex"',       'Access-Control-Allow-Origin': '*'     },     status: 401   }); }   function parseBasicAuth(auth) {     try {       return atob(auth.split(' ').pop()).split(':');     } catch (e) {       return [];     } }   function doBasicAuth(request) {   const auth = request.headers.get('Authorization');     if (!auth || !/^Basic [A-Za-z0-9._~+/-]+=*$/i.test(auth)) {     return false;   }     const [user, pass] = parseBasicAuth(auth);   return user === username && pass === password; }     async function fetchAndApply(request) {   if (request.method === 'OPTIONS') // allow preflight request     return new Response('', {       status: 200,       headers: {         'Access-Control-Allow-Origin': '*',         'Access-Control-Allow-Headers': '*',         'Access-Control-Allow-Methods': 'GET, POST, PUT, HEAD, OPTIONS'       }     });     if (openAuth && !doBasicAuth(request)) {     return unauthorized();   }     const region = request.headers.get('cf-ipcountry').toUpperCase();     const ip_address = request.headers.get('cf-connecting-ip');     const user_agent = request.headers.get('user-agent');       let response = null;     let url = new URL(request.url);     let url_host = url.host;       if (url.protocol == 'http:') {         url.protocol = 'https:'         response = Response.redirect(url.href);         return response;     }       if (await device_status(user_agent)) {         upstream_domain = upstream     } else {         upstream_domain = upstream_mobile     }       url.host = upstream_domain;       if (blocked_region.includes(region)) {         response = new Response('Access denied: WorkersProxy is not available in your region yet.', {             status: 403         });     } else if(blocked_ip_address.includes(ip_address)){         response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {             status: 403         });     } else{         let method = request.method;         let request_headers = request.headers;         let new_request_headers = new Headers(request_headers);           new_request_headers.set('Host', upstream_domain);         new_request_headers.set('Referer', url.href);           let original_response = await fetch(url.href, {             method: method,             headers: new_request_headers         })           let original_response_clone = original_response.clone();         let original_text = null;         let response_headers = original_response.headers;         let new_response_headers = new Headers(response_headers);         let status = original_response.status;           new_response_headers.set('access-control-allow-origin', '*');         new_response_headers.set('access-control-allow-credentials', true);         new_response_headers.delete('content-security-policy');         new_response_headers.delete('content-security-policy-report-only');         new_response_headers.delete('clear-site-data');           const content_type = new_response_headers.get('content-type');         if (content_type.includes('text/html') && content_type.includes('UTF-8')) {             original_text = await replace_response_text(original_response_clone, upstream_domain, url_host);         } else {             original_text = original_response_clone.body         }           response = new Response(original_text, {             status,             headers: new_response_headers         })     }     return response; }   addEventListener('fetch', event => {     event.respondWith(fetchAndApply(event.request).catch(err => {       console.error(err);       new Response(JSON.stringify(err.stack), {         status: 500,         headers: {           'Content-Type': 'application/json'         }       });     })); })     async function replace_response_text(response, upstream_domain, host_name) {     let text = await response.text()       var i, j;     for (i in replace_dict) {         j = replace_dict[i]         if (i == '$upstream') {             i = upstream_domain         } else if (i == '$custom_domain') {             i = host_name         }           if (j == '$upstream') {             j = upstream_domain         } else if (j == '$custom_domain') {             j = host_name         }           let re = new RegExp(i, 'g')         text = text.replace(re, j);     }     return text; }   async function device_status (user_agent_info) {     var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];     var flag = true;     for (var v = 0; v < agents.length; v++) { if (user_agent_info.indexOf(agents[v]) > 0) {             flag = false;             break;         }     }     return flag; }  
作者: 史上第一    时间: 2020-10-1 08:37
回忆 发表于 2020-10-1 08:32
// 替换成你想镜像的站点 const upstream = 'google.com'   // 如果那个站点有专门的移动适配站点,否则保 ...

没用,但是感谢~
作者: gj368    时间: 2020-10-1 10:07
我寻思不如小鸡+cdn来的实在靠谱

作者: 倚剑听枫    时间: 2020-10-1 10:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaysin    时间: 2020-10-1 10:08
2000买个机场隧道专线不香吗?
作者: edear    时间: 2020-10-1 10:30
这是为了cf的IP地址吧,理论上是可行的
作者: zhongziso    时间: 2020-10-1 10:36
买个iplc不香吗?
作者: wloot    时间: 2020-10-1 10:47
刚刚看了下好像不行: fb的cookie设置了httponly flag, 会导致js无法读取, 从而也没法改domain
作者: 012    时间: 2020-10-1 10:49
不太好办 fb有各种各样的来源过滤啥的,我觉得worker难搞
作者: zoenreo    时间: 2020-10-1 10:59
但是cf的ip地址已经被用烂了,很容易出现验证什么的
作者: 史上第一    时间: 2020-10-1 20:49
edear 发表于 2020-10-1 10:30
这是为了cf的IP地址吧,理论上是可行的

对。
作者: chiyan    时间: 2020-10-1 21:01
是反代后直接可以登录还是用cookie登录一个员工一个网址
作者: 大眼金鱼    时间: 2020-10-1 21:09
国庆没钱用给我骗一下吧
作者: future    时间: 2020-10-1 21:50
感觉不太能行,浏览器有相关的安全机制限制的




欢迎光临 全球主机交流论坛 (https://loc.010206.xyz/) Powered by Discuz! X3.4