Skip to content

Instantly share code, notes, and snippets.

@rampageX
Forked from zrt/Caddyfile
Created October 29, 2020 11:23
Show Gist options
  • Save rampageX/e87b9d09e87fb753aa365a89e2d42e9c to your computer and use it in GitHub Desktop.
Save rampageX/e87b9d09e87fb753aa365a89e2d42e9c to your computer and use it in GitHub Desktop.

Revisions

  1. @zrt zrt revised this gist Jan 29, 2020. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,9 @@
    * Github Gist
    * Github

    [使用方法](https://mp.weixin.qq.com/s/H3OOqhFRr0YZGorIAlsCjA)
    [直接使用的方法](https://mp.weixin.qq.com/s/H3OOqhFRr0YZGorIAlsCjA)

    需要编译Caddy用[这个魔改过的插件](https://github.com/zrt/caddy-filter-with-header) (额外替换了header)
    ****

    自己搭建,可以参考Caddyfile,
    并且需要编译Caddy用[这个魔改过的插件](https://github.com/zrt/caddy-filter-with-header) (额外替换了header)
  2. @zrt zrt created this gist Jan 29, 2020.
    1,391 changes: 1,391 additions & 0 deletions Caddyfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,1391 @@
    ###################
    # #
    # 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
    ########################
    11 changes: 11 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    * Google
    * En.Wikipedia
    * Zh.Wikipedia
    * Google Scholar
    * DuckduckGo
    * Github Gist
    * Github

    [使用方法](https://mp.weixin.qq.com/s/H3OOqhFRr0YZGorIAlsCjA)

    需要编译Caddy用[这个魔改过的插件](https://github.com/zrt/caddy-filter-with-header) (额外替换了header)