- En.Wikipedia
- Zh.Wikipedia
- Google Scholar
- DuckduckGo
- Github Gist
- Github
自己搭建,可以参考Caddyfile, 并且需要编译Caddy用这个魔改过的插件 (额外替换了header)
| ################### | |
| # # | |
| # SU.SG # | |
| # # | |
| ################### | |
| # https://mp.weixin.qq.com/s/H3OOqhFRr0YZGorIAlsCjA | |
| # todo | |
| # replace or remove content-security-policy header | |
| ################### | |
| # wikipedia-zh begin | |
| wiki.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {path} not "/access/from/{>CF-Connecting-IP}" | |
| if_op and | |
| if {path} not "/ip" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| redir /ip https://wq.apnic.net/static/search.html?query={>CF-Connecting-IP} 302 | |
| rewrite { | |
| if {path} is "/access/from/{>CF-Connecting-IP}" | |
| to /getcookie | |
| } | |
| proxy / https://zh.wikipedia.org { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-Proto {scheme} | |
| header_upstream -Referer | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| except /robots.txt /getcookie /ip /access/from/ | |
| insecure_skip_verify | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (D|d)omain=\.wikipedia.org | |
| replacement "Domain=.wiki.su.sg" | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern "<li id=\"n-indexpage\">" | |
| replacement "<li><a href=\"//su.sg\">Proxied by su.sg</a></li><li id=\"n-indexpage\">" | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern document.head.appendChild(script); | |
| replacement "script.src = script.src.replace(\"meta.wikimedia.org\", \"meta-wiki.su.sg:8443\");document.head.appendChild(script);" | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| # google scholar | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| # general | |
| filter rule { | |
| path .* | |
| search_pattern zh\.wikipedia\.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.m\.wikipedia\.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern upload.wikimedia.org | |
| replacement up-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern meta\.wikimedia\.org | |
| replacement meta-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| } | |
| m-wiki.su.sg:8443 { | |
| gzip | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://zh.m.wikipedia.org { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-Proto {scheme} | |
| header_upstream -Referer | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (D|d)omain=\.wikipedia.org | |
| replacement "Domain=.m-wiki.su.sg" | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { # featured | |
| path .* | |
| search_pattern "<ul class=\"footer-places hlist hlist-separated\">" | |
| replacement "<ul class=\"footer-places hlist hlist-separated\"><li><a href=\"//su.sg\">Proxied by su.sg</a></li>" | |
| } | |
| filter rule { # featured | |
| path .* | |
| search_pattern document.head.appendChild(script); | |
| replacement "script.src = script.src.replace(\"meta.wikimedia.org\", \"meta-wiki.su.sg:8443\");document.head.appendChild(script);" | |
| } | |
| # google scholar | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| # general | |
| filter rule { | |
| path .* | |
| search_pattern zh\.wikipedia\.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.m\.wikipedia\.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern upload.wikimedia.org | |
| replacement up-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern meta\.wikimedia\.org | |
| replacement meta-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| } | |
| up-wiki.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://upload.wikimedia.org { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-Proto {scheme} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://zh.wikipedia.org/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| header / Access-Control-Allow-Origin * | |
| } | |
| meta-wiki.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://meta.wikimedia.org { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Accept-Encoding identity | |
| header_upstream Referer "https://zh.wikipedia.org/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern document.head.appendChild(script); | |
| replacement "script.src = script.src.replace(\"meta.wikimedia.org\", \"meta-wiki.su.sg:8443\");document.head.appendChild(script);" | |
| } | |
| # general | |
| filter rule { | |
| path .* | |
| search_pattern zh\.wikipedia\.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.m\.wikipedia\.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern upload.wikimedia.org | |
| replacement up-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern meta\.wikimedia\.org | |
| replacement meta-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| } | |
| # wikipedia-zh end | |
| #################################### | |
| # wikipedia-en begin | |
| en-wiki.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://en.wikipedia.org { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-Proto {scheme} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream Accept-Encoding identity | |
| header_upstream -Referer | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (D|d)omain=\.wikipedia.org | |
| replacement "Domain=.en-wiki.su.sg" | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern "<li id=\"n-contents\">" | |
| replacement "<li><a href=\"//su.sg\">Proxied by su.sg</a></li><li id=\"n-contents\">" | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern document.head.appendChild(script); | |
| replacement "script.src = script.src.replace(\"meta.wikimedia.org\", \"meta-wiki.su.sg:8443\");document.head.appendChild(script);" | |
| } | |
| # google scholar | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| # general | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.wikipedia\.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.m\.wikipedia\.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern upload.wikimedia.org | |
| replacement up-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern meta\.wikimedia\.org | |
| replacement meta-wiki.su.sg:8443 | |
| } | |
| } | |
| m-en-wiki.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://en.m.wikipedia.org { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-Proto {scheme} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream Accept-Encoding identity | |
| header_upstream -Referer | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (D|d)omain=\.wikipedia.org | |
| replacement "Domain=.m-en-wiki.su.sg" | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern "<li id=\"footer-places-terms-use\">" | |
| replacement "<li><a href=\"//su.sg\">Proxied by su.sg</a></li><li id=\"footer-places-terms-use\">" | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern document.head.appendChild(script); | |
| replacement "script.src = script.src.replace(\"meta.wikimedia.org\", \"meta-wiki.su.sg:8443\");document.head.appendChild(script);" | |
| } | |
| # google scholar | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| # general | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.wikipedia\.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh\.m\.wikipedia\.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern upload.wikimedia.org | |
| replacement up-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern meta\.wikimedia\.org | |
| replacement meta-wiki.su.sg:8443 | |
| } | |
| } | |
| # wikipedia-en end | |
| #################################### | |
| # google begin | |
| gg.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://www.google.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream -Referer | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern "domain=\.google\.com" | |
| replacement "domain=.gg.su.sg" | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { #featured | |
| content_type text/.* | |
| search_pattern "<span id=\"fsl\">" | |
| replacement "<span id=\"fsl\"><a href=\"https://su.sg/\">Proxied by su.sg</a>" | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern encrypted-tbn\w.gstatic.com | |
| replacement encrypted-gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern adservice.google.com | |
| replacement localhost | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern ogs.google.com | |
| replacement localhost | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern accounts.google.com | |
| replacement localhost | |
| } | |
| # general | |
| filter rule { | |
| content_type text/.* | |
| search_pattern id.google.com | |
| replacement id-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern www.google.com | |
| replacement gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (www|ssl).gstatic.com | |
| replacement gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern apis.google.com | |
| replacement apis-gg.su.sg:8443 | |
| } | |
| # wikipedia | |
| filter rule { | |
| content_type text/.* | |
| search_pattern zh.wikipedia.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern zh.m.wikipedia.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| # google scholar | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| # lastone | |
| filter rule { | |
| content_type text/.* | |
| search_pattern \.appendChild\((\w*?)\) | |
| replacement ".appendChild(function(){if({1}.src){{1}.src={1}.src.replace('www.google.com', 'gg.su.sg:8443');}if({1}.href){{1}.href={1}.href.replace('ogs.google.com','localhost')}return {1}}())" | |
| } | |
| } | |
| id-gg.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://id.google.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://www.google.com/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern id.google.com | |
| replacement id-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern www.google.com | |
| replacement gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (www|ssl).gstatic.com | |
| replacement gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern apis.google.com | |
| replacement apis-gg.su.sg:8443 | |
| } | |
| } | |
| gstatic-gg.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://www.gstatic.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://www.google.com/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern adservice.google.com | |
| replacement localhost | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern ogs.google.com | |
| replacement localhost | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern accounts.google.com | |
| replacement localhost | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern www.google.com | |
| replacement gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (www|ssl).gstatic.com | |
| replacement gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern apis.google.com | |
| replacement apis-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern encrypted-tbn\w.gstatic.com | |
| replacement encrypted-gstatic-gg.su.sg:8443 | |
| } | |
| # lastone | |
| filter rule { | |
| content_type text/.* | |
| search_pattern \.appendChild\((\w*?)\) | |
| replacement ".appendChild(function(){if({1}.src){{1}.src={1}.src.replace('www.google.com', 'gg.su.sg:8443');}if({1}.href){{1}.href={1}.href.replace('ogs.google.com','localhost')}return {1}}())" | |
| } | |
| } | |
| encrypted-gstatic-gg.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://encrypted-tbn0.gstatic.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://www.google.com/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| } | |
| apis-gg.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://apis.google.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://www.google.com/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| } | |
| # google end | |
| ################################# | |
| # google scholar begin | |
| scholar.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://scholar.google.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar\.googleusercontent\.com | |
| replacement scholar-ggusercontent.su.sg:8443 | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern domain=\.google\.com | |
| replacement domain=.scholar.su.sg | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern domain=scholar\.google\.com | |
| replacement domain=.scholar.su.sg | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern "<div id=\"gs_ftr_rt\">" | |
| replacement "<div id=\"gs_ftr_rt\"><a href=\"https://su.sg/\">Proxied by su.sg</a>" | |
| } | |
| # general | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| filter rule { # featured | |
| content_type text/.* | |
| search_pattern :scholar\.su\.sg:8443\/ | |
| replacement :scholar.google.com/ | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern www.google.com | |
| replacement gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern id.google.com | |
| replacement id-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (www|ssl).gstatic.com | |
| replacement gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern encrypted-tbn\w.gstatic.com | |
| replacement encrypted-gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern apis.google.com | |
| replacement apis-gg.su.sg:8443 | |
| } | |
| # wikipedia | |
| filter rule { | |
| content_type text/.* | |
| search_pattern zh.wikipedia.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern zh.m.wikipedia.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| } | |
| scholar-ggusercontent.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://scholar.googleusercontent.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| # cookie filter | |
| filter rule { | |
| content_type text/.* | |
| search_pattern domain=\.google\.com | |
| replacement domain=.scholar-ggusercontent.su.sg | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern domain=scholar\.google\.com | |
| replacement domain=.scholar-ggusercontent.su.sg | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern domain=scholar\.googleusercontent\.com | |
| replacement domain=.scholar-ggusercontent.su.sg | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern domain=\.googleusercontent\.com | |
| replacement domain=.scholar-ggusercontent.su.sg | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| # general | |
| filter rule { | |
| content_type text/.* | |
| search_pattern http://scholar.google.com | |
| replacement https://scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern scholar.google.com | |
| replacement scholar.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern www.google.com | |
| replacement gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern (www|ssl).gstatic.com | |
| replacement gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern encrypted-tbn\w.gstatic.com | |
| replacement encrypted-gstatic-gg.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern apis.google.com | |
| replacement apis-gg.su.sg:8443 | |
| } | |
| # wikipedia | |
| filter rule { | |
| content_type text/.* | |
| search_pattern zh.wikipedia.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern zh.m.wikipedia.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| } | |
| # google scholar end | |
| ################################# | |
| # duckduckgo begin | |
| duck.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://duckduckgo.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern duckduckgo.com | |
| replacement duck.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern \.sub\+\"\.\" | |
| replacement ".sub+\"-\"" | |
| } | |
| # wikipedia | |
| filter rule { | |
| path .* | |
| search_pattern zh.wikipedia.org | |
| replacement wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern zh.m.wikipedia.org | |
| replacement m-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.wikipedia\.org | |
| replacement en-wiki.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern en\.m\.wikipedia\.org | |
| replacement m-en-wiki.su.sg:8443 | |
| } | |
| } | |
| proxy-duck.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://proxy.duckduckgo.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://duckduckgo.com/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern duckduckgo.com | |
| replacement duck.su.sg:8443 | |
| } | |
| } | |
| improving-duck.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| root ./public_su_sg | |
| proxy / https://improving.duckduckgo.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://duckduckgo.com/" | |
| except /robots.txt | |
| insecure_skip_verify | |
| } | |
| filter rule { | |
| content_type text/.* | |
| search_pattern duckduckgo.com | |
| replacement duck.su.sg:8443 | |
| } | |
| } | |
| # duckduckgo end | |
| ######################## | |
| # github gist begin | |
| gist.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://gist.github.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| header / -Content-Security-Policy | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| } | |
| # github gist end | |
| ######################## | |
| # github begin | |
| github.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| redir 302 { | |
| if {path} not "/robots.txt" | |
| if_op and | |
| if {~su-sg-x-access} not "temp-yes" | |
| / https://su.sg/?ref={hostonly} | |
| } | |
| proxy / https://github.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| header / -Content-Security-Policy | |
| filter rule { | |
| path .* | |
| search_pattern integrity="sha512- | |
| replacement integriti="sha512- | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern github.githubassets.com | |
| replacement github-assets.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern raw.githubusercontent.com | |
| replacement github-raw.su.sg:8443 | |
| } | |
| # gist | |
| filter rule { | |
| path .* | |
| search_pattern gist.github.com | |
| replacement gist.su.sg:8443 | |
| } | |
| # github | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| # inject js disable pjax | |
| filter rule { | |
| path .* | |
| search_pattern "</head>" | |
| replacement "<script src=\"//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js\"></script> <script src=\"https://lepuslab.com/js/inject_github.js\"></script></head>" | |
| } | |
| } | |
| github-assets.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| proxy / https://github.githubassets.com { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://github.com/" | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| header / Access-Control-Allow-Origin * | |
| header / -Content-Security-Policy | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| } | |
| github-raw.su.sg:8443 { | |
| gzip | |
| cache | |
| tls { | |
| dns cloudflare | |
| } | |
| log / ./su.sg-access.log "{>CF-Connecting-IP} - {combined} - {host}" | |
| root ./public_su_sg | |
| proxy / https://raw.githubusercontent.com/ { | |
| header_upstream X-Real-IP {>CF-Connecting-IP} | |
| header_upstream X-Forwarded-For {>CF-Connecting-IP} | |
| header_upstream User-Agent {>User-Agent} | |
| header_upstream -Referer | |
| header_upstream Referer "https://github.com/" | |
| except /robots.txt | |
| header_upstream Accept-Language zh-CN,zh;q=0.9 | |
| header_upstream Accept-Encoding identity | |
| insecure_skip_verify | |
| } | |
| header / Access-Control-Allow-Origin * | |
| header / -Content-Security-Policy | |
| filter rule { | |
| path .* | |
| search_pattern github.com | |
| replacement github.su.sg:8443 | |
| } | |
| } | |
| # github end | |
| ######################### | |
| # telegram begin | |
| # telegram end | |
| ######################## | |
| # reddit begin | |
| # reddit end | |
| ######################## | |
| # twitter begin | |
| # twitter end | |
| ######################## |