使用Cloudflare Worker代理后端请求

This commit is contained in:
✨小透明・宸✨
2020-05-26 02:09:30 +08:00
parent 5374a34812
commit 7b3fe22947
4 changed files with 83 additions and 30 deletions

View File

@@ -6,10 +6,40 @@
[去这里使用](https://transparentlc.github.io/WechatMomentScreenshot)
> 本工具生成的截图,仅可用于**应付各类强制要求转发朋友圈的情形**,请勿用于其他用途。
---
### 这个小工具是什么?
一个因为不喜欢也不想往朋友圈发某些不得不发的废文而做出来的摸鱼产物。
### 为什么生成的截图和我在手机上截的不一样?能不能做出 iOS 的样式?
不同手机的界面总是有那么一点区别的,要和真正的截图完全一样……我也很难办啊!(摊手)
### 生成的截图中,文字部分能否出现表情符号?
微信中除 Emoji 之外的其它表情符号实际上是特定的文本,复制后粘贴到别处时就可以看到,在微信中则显示为表情符号。
比如<img src="https://ae01.alicdn.com/kf/HTB1kEKaXe3tHKVjSZSg7604QFXas.png" style="width: 1em;" />这个表情,从简体中文版微信中发送的实际上是`[再见]`,繁体中文是`[再見]`,英文是`[Bye]`。即使不选择表情符号而是手动输入`[再见]``[再見]``[Bye]`(任选一个输入即可,和微信的语言设置无关),发送后它们都会显示为<img src="https://ae01.alicdn.com/kf/HTB1kEKaXe3tHKVjSZSg7604QFXas.png" style="width: 1em;" />
在这个小工具的“正文”处输入表情符号对应的文本,生成截图时也会被替换成对应的表情符号~
目前仅支持简体中文、繁体中文、英文版微信的表情文本。从使用其他语言的微信发送一条带有表情的消息然后复制到这里,生成的截图中不一定会出现对应的表情符号。
### 更新记录
<details>
<summary>点击展开</summary>
#### 2020.5.26
由于自己的服务器用了 Cloudflare 的免费 CDN然而最近分配到的 IPv4 地址被墙了,所以后端(在墙内)不能用了……
于是试着用 Cloudflare Worker 写了个简单的代理(参见文件 `cfworker_proxy.js`)解决之(〃′▽`)
#### 2019.12.5
~~解决了一些已知问题。~~
@@ -42,22 +72,4 @@
新功能:生成发表纯文字或图片的截图。
---
### 这个小工具是什么?
一个因为不喜欢也不想往朋友圈发某些不得不发的废文而做出来的摸鱼产物。
### 为什么生成的截图和我在手机上截的不一样?能不能做出 iOS 的样式?
不同手机的界面总是有那么一点区别的,要和真正的截图完全一样……我也很难办啊!(摊手)
### 生成的截图中,文字部分能否出现表情符号?
微信中除 Emoji 之外的其它表情符号实际上是特定的文本,复制后粘贴到别处时就可以看到,在微信中则显示为表情符号。
比如<img src="https://ae01.alicdn.com/kf/HTB1kEKaXe3tHKVjSZSg7604QFXas.png" style="width: 1em;" />这个表情,从简体中文版微信中发送的实际上是`[再见]`,繁体中文是`[再見]`,英文是`[Bye]`。即使不选择表情符号而是手动输入`[再见]``[再見]``[Bye]`(任选一个输入即可,和微信的语言设置无关),发送后它们都会显示为<img src="https://ae01.alicdn.com/kf/HTB1kEKaXe3tHKVjSZSg7604QFXas.png" style="width: 1em;" />
在这个小工具的“正文”处输入表情符号对应的文本,生成截图时也会被替换成对应的表情符号~
目前仅支持简体中文、繁体中文、英文版微信的表情文本。从使用其他语言的微信发送一条带有表情的消息然后复制到这里,生成的截图中不一定会出现对应的表情符号。
</details>

32
cfworker_proxy.js Normal file
View File

@@ -0,0 +1,32 @@
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
});
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
let responseConfig = {
status: 200,
headers: {
'Access-Control-Allow-Origin': 'https://akarin.dev',
'Content-Type': 'application/json',
},
}
let articleURL = new URL(request.url).searchParams.get('url');
if (!articleURL || !articleURL.startsWith('https://mp.weixin.qq.com')) {
return new Response('{"success":false}', responseConfig);
}
let requestURL = new URL('https://i.akarin.dev/misc/get_article_info.php');
requestURL.searchParams.set('url', articleURL);
return new Response(
await (
await fetch(requestURL.toString())
).text(),
responseConfig
);
}

View File

@@ -6,21 +6,21 @@ if (navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1) {
div.setAttribute('id', 'fuckWechat');
document.querySelector('.mdui-appbar').style.filter = 'blur(2px)';
document.querySelector('.mdui-container').style.filter = 'blur(2px)';
div.style.cssText = 'position: fixed; left: 0; top: 0; width: 100%; height: 100%; box-sizing: border-box; padding: 18px; font-size: 16px; line-height: 1.5em; background-color: rgba(255,255,255,.6); z-index: 2147483647; display: flex; justify-content: center; align-items: center;'
div.style.cssText = 'position:fixed;left:0;top:0;width:100%;height:100%;box-sizing:border-box;padding:18px;font-size:16px;line-height:1.5em;background-color:rgba(255,255,255,.8);z-index:2147483647;display:flex;justify-content:center;align-items:center'
div.innerHTML = ''
+ '<div>'
+ '<h1>( ^ω^)</h1>'
+ '<p><a href="https://www.zhihu.com/question/271184234" style="color: #175199;">“为什么一些人只使用 QQ 而不使用微信?”</a></p>'
+ '<p><a href="https://www.zhihu.com/question/271184234" style="color:#175199">“为什么一些人只使用 QQ 而不使用微信?”</a></p>'
+ '<p>因为微信是个:</p>'
+ '<ul>'
+ '<li>电脑版功能不全还只能扫码登录</li>'
+ '<li>做不出夜间模式</li>'
+ '<li>群聊不能禁言</li>'
+ '<li>把人拉进群聊不需要本人同意</li>'
+ '<li>无法一键清除小红点</li>'
+ '<li>公众号文章插个外部链接都不行</li>'
+ '<li>电脑版功能不全还只能扫码登录</li>'
+ '<li>做不出夜间模式</li>'
+ '<li>群聊不能禁言</li>'
+ '<li>把人拉进群聊不需要本人同意</li>'
+ '<li>无法一键清除小红点</li>'
+ '<li>公众号文章插个外部链接都不行</li>'
+ '</ul>'
+ '<p>……的辣鸡软件,所以我就加上了这个遮罩层把它批判一番 : )</p>'
+ '<p>……的辣鸡软件 : )</p>'
+ '<p><button style="width: 100%; background-color: #175199; color: #fff; border: none; border-radius: 4px; height: 2em;" onclick="document.body.removeChild(document.getElementById(\'fuckWechat\'));document.querySelector(\'.mdui-appbar\').style.filter=\'\';document.querySelector(\'.mdui-container\').style.filter=\'\';">继续</button></p>'
+ '<p style="text-align: center; color: #bbb; font-size: 14px">使用浏览器打开此页面,即可直接跳过遮罩层</p>'
+ '</div>';

View File

@@ -772,14 +772,23 @@
<script src="avatarURL.js"></script>
<script src="emoticon.js"></script>
<script>
//mdui.alert('<span class="mdui-typo">本工具已获得微信官方“绿色网站”认证(滑稽),请不要尝试在微信中使用本工具。<br /><br />作者坚决反对破坏自由(而不是所谓“绿色”)上网环境的<a href="https://www.zhihu.com/question/318459753/answer/641027942" target="_blank">作恶行为</a>。<br /><br />请支持 996.icu 项目:</span><a href="https://996.icu" target="_blank"><img src="https://img.shields.io/badge/link-996.icu-red.svg" alt="996.icu" /></a>');
mdui.confirm(
'本工具生成的截图,仅可用于<strong>应付各类强制要求转发朋友圈的情形</strong>,请勿用于其他用途。<br><br>如果对此有异议,你可以不使用本工具并立即离开当前页面。',
null,
null,
function () { location.href = 'about:blank' },
{
modal: true,
closeOnEsc: false,
}
);
//输入微信文章的链接,通过后端自动获取文章标题和文章封面
function getArticleInfo() {
var requestDialog = new mdui.Dialog('#request');
mdui.prompt('公众号文章链接', function (value) {
var xhr = new XMLHttpRequest;
xhr.open('GET', 'https://i.akarin.dev/misc/get_article_info.php?url=' + encodeURIComponent(value)); //获取标题和封面的服务器
xhr.open('GET', 'https://wmsproxy.transparentlc.workers.dev/?url=' + encodeURIComponent(value)); //获取标题和封面的服务器
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var result = JSON.parse(xhr.responseText);