Advertisement
Guest User

Untitled

a guest
Sep 24th, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. addEventListener('fetch', event => {
  2. event.respondWith(handleRequest(event.request));
  3. });
  4.  
  5. const BYPASS_COOKIES = [
  6. 'betacentralauth_Session',
  7. 'betacentralauth_User'
  8. ];
  9.  
  10. const BYPASS_NAMESPACES = ["Special", "Module", "Especial"];
  11.  
  12. async function handleRequest(request) {
  13. if (request.method === "POST") {
  14. return fetch(request);
  15. }
  16.  
  17. let url = new URL(request.url);
  18. let uaValue = 'desktop';
  19. const ua = request.headers.get('user-agent') || '';
  20.  
  21. if (/Mobile|Android|Silk|Kindle|BlackBerry|Opera Mini|Opera Mobi/i.test(ua)) {
  22. uaValue = 'mobile';
  23. }
  24.  
  25. url.searchParams.set('ua', uaValue);
  26.  
  27. let bypassCache = false;
  28.  
  29. let cookie = request.headers.get('cookie') || '';
  30.  
  31. for (const cookieName of BYPASS_COOKIES) {
  32. if (cookie.includes(cookieName)) {
  33. bypassCache = true;
  34. break;
  35. }
  36. }
  37.  
  38. for (const namespace of BYPASS_NAMESPACES) {
  39. if (url.pathname.includes(`/wiki/${namespace}:`)) {
  40. bypassCache = true;
  41. break;
  42. }
  43. }
  44.  
  45. if (bypassCache) {
  46. const response = await fetch(request);
  47. const responseHeaders = new Headers(response.headers);
  48. responseHeaders.set('CF-Cache-Status', 'BYPASS');
  49. return new Response(response.body, {
  50. status: response.status,
  51. statusText: response.statusText,
  52. headers: responseHeaders,
  53. redirect: "manual"
  54. });
  55. }
  56.  
  57. const modifiedHeaders = new Headers(request.headers);
  58. modifiedHeaders.set('User-Agent', `${uaValue}`);
  59.  
  60. // Conditional properties for new Request
  61. const requestProps = {
  62. method: request.method,
  63. headers: modifiedHeaders,
  64. cf: { cacheEverything: true }
  65. };
  66.  
  67. if (request.method !== "GET" && request.method !== "HEAD") {
  68. requestProps.body = request.body;
  69. }
  70.  
  71. request = new Request(url.toString(), requestProps);
  72.  
  73. const originalResponse = await fetch(request);
  74. const responseHeaders = new Headers(originalResponse.headers);
  75.  
  76. responseHeaders.set('Cache-Control', 'public, must-revalidate, max-age=3600, stale-while-revalidate=90');
  77. responseHeaders.append('Vary', 'User-Agent');
  78.  
  79. return new Response(originalResponse.body, {
  80. status: originalResponse.status,
  81. statusText: originalResponse.statusText,
  82. headers: responseHeaders
  83. });
  84. }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement