{"id":12750,"date":"2019-12-31T23:37:13","date_gmt":"2019-12-31T15:37:13","guid":{"rendered":"http:\/\/4563.org\/?p=12750"},"modified":"2019-12-31T23:37:13","modified_gmt":"2019-12-31T15:37:13","slug":"%e5%88%a9%e7%94%a8-cloudflare-%e5%86%99%e4%ba%86%e4%b8%aa%e4%b8%8b%e8%bd%bd%e8%be%85%e5%8a%a9%e5%b7%a5%e5%85%b7","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=12750","title":{"rendered":"\u5229\u7528 cloudflare \u5199\u4e86\u4e2a\u4e0b\u8f7d\u8f85\u52a9\u5de5\u5177"},"content":{"rendered":"<h1 class=\"post-title\">\u5229\u7528 cloudflare \u5199\u4e86\u4e2a\u4e0b\u8f7d\u8f85\u52a9\u5de5\u5177<\/h1>\n<p><i class=\"emoji\"><b>?<\/b><\/i> Demo link\uff1a<a href=\"https:\/\/proxy.onesrc.workers.dev\/\" target=\"_blank\" rel=\"noopener\">https:\/\/proxy.onesrc.workers.dev<\/a><\/p>\n<p>\u4e0b\u8f7d\u8d70 Cloudflare\uff0c\u652f\u6301\u65ad\u70b9\u7eed\u4f20\uff0cmime \u54cd\u5e94\u4e0e\u539f\u94fe\u63a5\u4e00\u81f4\u3002\u4e0d\u652f\u6301\u975e\u76f4\u94fe\u4e0b\u8f7d\uff0c\u4e0d\u652f\u6301\u91cd\u5b9a\u5411\u3002\u76ee\u524d\u4f5c\u8005\u53ea\u5b9e\u73b0\u4e86\u7b80\u5355\u7684\u4e0b\u8f7d\u529f\u80fd\uff0c\u5982\u679c\u60f3\u8981\u7f8e\u5316\u7f51\u9875\u53ef\u4ee5\u81ea\u5df1\u52a8\u624b<\/p>\n<p>\u672c\u5de5\u5177\u4e5f\u662f Workers \u7684\u4e00\u4e2a\u5b9e\u7528\u5b9e\u8df5\uff0c\u53ef\u4ee5\u89e3\u51b3\u5728\u65e0\u4ee3\u7406\u7535\u8111\u4e0a\u4e0b\u8f7d Github \u7b49\u6162\u7684\u95ee\u9898\u3002<\/p>\n<p>=================================================<\/p>\n<h2 id=\"directory0325896879877132451\">\u7b80\u5355\u8bf4\u660e<\/h2>\n<p>demo:<\/p>\n<p><a href=\"https:\/\/www.onesrc.cn\/go\/aHR0cHM6Ly9wcm94eS5vbmVzcmMud29ya2Vycy5kZXYv\" target=\"_blank\" rel=\"noopener\">https:\/\/proxy.onesrc.workers.dev\/<\/a><\/p>\n<p>\u4e0b\u8f7d\u8d70 cloudflare\uff0c\u652f\u6301\u65ad\u70b9\u7eed\u4f20\uff0cmime \u54cd\u5e94\u4e0e\u539f\u94fe\u63a5\u4e00\u81f4\u3002<\/p>\n<p>\u4f46\u4e0d\u652f\u6301\u975e\u76f4\u94fe\u4e0b\u8f7d\u3002<\/p>\n<p>\u4f8b\u5982 Github \u4e0b\u8f7d\u901f\u5ea6\u8fc7\u6162\uff0c\u53ef\u4f7f\u7528\u672c\u5de5\u5177\u52a0\u901f\u3002<\/p>\n<h2 id=\"directory0325896879877132452\">\u4ee3\u7801\u793a\u4f8b<\/h2>\n<pre><code class=\"hljs xml\">addEventListener('fetch', event =&gt; {\r\n    event.respondWith(handleRequest(event.request))\r\n})\r\n\r\nconst html = `\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">head<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"url\"<\/span> <span class=\"hljs-attr\">placeholder<\/span>=<span class=\"hljs-string\">\"url\"<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"url\"<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"width: 80%; display: block;\"<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"submit\"<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"submit\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"submit\"<\/span>\/&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"res\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"a\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">a<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>&gt;<\/span>\u6ce8:\u8be5\u5de5\u5177\u53ea\u9488\u5bf9\u76f4\u94fe\u6709\u6548<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span>&gt;<\/span><span class=\"javascript\">\r\n  <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'submit'<\/span>).onclick=<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>()<\/span>{\r\n      <span class=\"hljs-keyword\">let<\/span> url  = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'url'<\/span>).value;\r\n      <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'url: '<\/span>+url);\r\n      <span class=\"hljs-keyword\">let<\/span> a = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'a'<\/span>);\r\n      <span class=\"hljs-keyword\">let<\/span> div = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'res'<\/span>);\r\n      <span class=\"hljs-keyword\">if<\/span>(!url || !url.startsWith(<span class=\"hljs-string\">'http'<\/span>)){\r\n          div.textContent=<span class=\"hljs-string\">\"\u94fe\u63a5\u4e0d\u5408\u6cd5: \"<\/span>+url;\r\n          a.style=<span class=\"hljs-string\">\"display:none\"<\/span>;\r\n      }<span class=\"hljs-keyword\">else<\/span>{\r\n          div.textContent=<span class=\"hljs-string\">\"\"<\/span>;\r\n          <span class=\"hljs-keyword\">let<\/span> res = (<span class=\"hljs-keyword\">new<\/span> URL(<span class=\"hljs-built_in\">window<\/span>.location.href)).origin+<span class=\"hljs-string\">'?url='<\/span>+<span class=\"hljs-built_in\">encodeURIComponent<\/span>(url);\r\n          a.textContent=res;\r\n          a.href=res;\r\n          a.style=<span class=\"hljs-string\">\"\"<\/span>;\r\n      }\r\n  }\r\n  <\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">body<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span>`;\r\n\r\n\/**\r\n * Respond to the request\r\n * @param {Request} request\r\n *\/\r\nasync function handleRequest(request) {\r\n    let url = (new URL(request.url)).searchParams.get('url');\r\n    if (!url) {\r\n        return new Response(html, { status: 200, headers: { 'Content-Type': 'text\/html; charset=utf-8' } });\r\n    }\r\n    let r = request.headers.get('Range');\r\n    console.log(r);\r\n    return await fetch(url, {\r\n        headers: {\r\n            range: r || 'bytes=0-'\r\n        }\r\n    });\r\n}<\/code><\/pre>\n<h2 id=\"directory0325896879877132453\">\u5176\u4ed6\u8bf4\u660e<\/h2>\n<ul>\n<li>ui \u6bd4\u8f83\u7b80\u964b\uff0c\u53ef\u81ea\u5df1\u4fee\u6539\u89e3\u51b3\u3002<\/li>\n<li>\u4e0d\u652f\u6301\u91cd\u5b9a\u5411\uff0c\u5982\u9700\u8981\u81ea\u5df1\u6dfb\u52a0\u3002<\/li>\n<li>\u4f7f\u7528\u672c\u5de5\u5177\u4ec5\u4f9b\u5b66\u4e60\u4ea4\u6d41\u4f7f\u7528\u3002<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5229\u7528 cloudflare \u5199\u4e86\u4e2a&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/12750"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12750"}],"version-history":[{"count":1,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/12750\/revisions"}],"predecessor-version":[{"id":12774,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/12750\/revisions\/12774"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12750"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}