Demo, do not put it.
The website download link is directly xxx.com/abc.jpg. There is no 302 jump to Microsoft xxx.sharepoint.com, nor is there a long chain of reverse xxx.sharepoint.com.

preparation:
1, Onedrive, or Sharepoint
All kinds of A1, E3, E5, century. (Sharepoint defaults to 25T)
2. OneManager, Github Address: https://github.com/qkqpttgf/OneManager-php
Based on various serverless platforms, such as Heroku, Tencent SCF, Alibaba FC, Huawei FG, Baidu CFC, the configuration is saved in their environment variables, and of course, it can be installed in VPS and space. However, for consistency, the program does not store the directory structure of onedrive fixedly, and caches for up to one hour
3. Heroku, it is better to register two accounts. Magic is required for registration and login, but not for normal operation
The OneManager configuration is saved in the environment variable, so there is no need to monitor and keep alive all the time. The Heroku free package is 550 hours a month, 550 hours/30 days=18.33 hours. As long as the visit time period is free for 24-18 hours a day=6 hours, no one visits it. This month is actually enough, but some people's websites may be used up before the end of the month due to a large number of visitors.
Of course, heroku can also bind cards for 1000 hours, and also customize the domain name. However, SSL is troublesome.
4. CF workers, free

Deploy program, install program, bind network disk:
1. One click deployment of OneManager to Heroku
2. Access the given herokuapp domain name and formally install the program
3. After installation, log in and bind Onedrive or Sharepoint in settings
4. Make some settings in the settings
5. Change the Heroku account and install it again (it doesn't matter if the time is long enough)

a key:
Fill in the following code in CF Workers

 //One day const SingleDay = '111.herokuapp.com' //Two-day const DoubleDay = '222.herokuapp.com' //All to CF agent, true/false const CFproxy = true //Since heroku cannot customize the domain name without binding the card, https is not convenient even after binding the card //In addition, the free package is 550 hours per month, which is not enough for some people //So we use this code in CF Workers to pull the same web page under different heroku accounts on separate orders and double days //Only change the upper part, not the lower part addEventListener('fetch', event => { let nd = new Date(); if (nd.getDate()%2) { host = SingleDay } else { host = DoubleDay } if (!CFproxy) { let url=new URL(event.request.url); if (url.protocol == 'http:') { url.protocol = 'https:' response = Response.redirect(url.href); event.respondWith( response ); } else { url.hostname=host; let request=new Request(url,event.request); event.respondWith( fetch(request) ) } } else { event.respondWith( fetchAndApply(event.request) ); } }) async function fetchAndApply(request) { let response = null; let url = new URL(request.url); if (url.protocol == 'http:') { url.protocol = 'https:' response = Response.redirect(url.href); return response; } url.host = host; let method = request.method; let body = request.body; let request_headers = request.headers; let new_request_headers = new Headers(request_headers); new_request_headers.set('Host', url.host); new_request_headers.set('Referer', request.url); let original_response = await fetch(url.href, { method: method, body: body, headers: new_request_headers }); response = new Response(original_response.body, { status: original_response.status, headers: original_response.headers }) return response; }

Fill in the websites under different heroku accounts on odd or even odd days (of course, the two websites should be set exactly the same), so that each heroku account can only visit 15 or 16 days a month, even if it is visited for only 360 or 384 hours every 24 hours.
Finally, add custom domain name routing to workers!

It can be Free from beginning to end. From the perspective of the download process, it can completely pretend that CF is set on a big chicken, and no one can see that I don't have a server

Original link