Skip to content

Commit

Permalink
feat: 支持 workers 部署
Browse files Browse the repository at this point in the history
  • Loading branch information
weaigc committed Sep 13, 2023
1 parent 4b6ef0a commit a4568e4
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 11 deletions.
21 changes: 17 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,15 @@ Bingo,一个让你呼吸顺畅 New Bing。
- [x] 适配深色模式
- [x] 支持历史记录
- [x] 支持内置提示词
- [x] 支持 Workers 部署
- [ ] 国际化翻译
- [ ] 支持 OpenAI API

## 在线部署(Replit及CF均受到不同程度的封锁,故需要配置用户信息才能使用)
### 1. 部署到 Replit
## 在线部署
### 1. 部署到 Replit(推荐)

[点击部署Replit](https://replit.com/@weaigc/bingo?v=1)
并修改 `BING_COOKIE` 为自己的 COOKIE

### 2. 部署到 CloudFlare (需要有自己的域名才可以)

Expand All @@ -60,10 +62,21 @@ Bingo,一个让你呼吸顺畅 New Bing。

- 通过左侧菜单进入「Workers」,并点击「Create a Worker」。

- 创建 Worker 服务,复制 [worker.js](./cloudflare/worker.js) 全部代码,修改第一行 `SITE_HOST` 为自己的域名,粘贴至创建的服务中,根据注释进行改动,保存并部署。
- 创建 Worker 服务,复制 [worker.js](./cloudflare/worker.js) 全部代码,修改第一行 `SITE_HOST` 为自己的域名,修改 `BING_COOKIE` 为自己的COOKIE,粘贴至创建的服务中,根据注释进行改动,保存并部署。

- 触发器 中自定义访问域名。

### 如何获取 BING_COOKIE

> 配置了 BING_COOKIE 意味着你将自己的账号共享给所有使用此服务的人,如果不需要免登录画图的功能,不建议设置此变量
打开 https://www.bing.com 并登录,然后访问 https://www.bing.com/turing/captcha/challenge ,通过人机校验(如果显示**无效域**,则跳过校验不管),然后

![BING_COOKIE](./docs/images/curl.png)

> 复制出来的内容应该如下所示。确认格式无误后,打开 https://bing.github1s.tk/#dialog=%22settings%22 ,粘贴进去,点击“转成 BING_COOKIE 并复制”,然后从剪切板粘贴即可得到。(你也可以先在网页上进行验证)

### 部署其它平台
<details>
<summary>
Expand Down Expand Up @@ -124,7 +137,7 @@ docker run --rm -it -e BING_HEADER=xxxx -p 7860:7860 weaigc/bingo

![BING HEADER](./docs/images/curl.png)

> 复制出来的内容应该如下所示。确认格式无误后,打开 https://hf4all-bingo.hf.space/#dialog=%22settings%22 ,粘贴进去,点击“转成 BING_HEADER 并复制”,然后从剪切板粘贴即可得到。(你也可以先在网页上进行验证)
> 复制出来的内容应该如下所示。确认格式无误后,打开 https://bing.github1s.tk/#dialog=%22settings%22 ,粘贴进去,点击“转成 BING_HEADER 并复制”,然后从剪切板粘贴即可得到。(你也可以先在网页上进行验证)
以下是格式参考,需要注意的是,网页端保存的格式是以`curl`开头, 而服务端配置的 `BING_HEADER``base64` 格式,两者不能互通。
<details>
Expand Down
9 changes: 7 additions & 2 deletions cloudflare/worker.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const SITE_HOST = '这城改为你的域名' // 为空则自动推断
const SITE_HOST = '' // 为空则自动推断
const TARGET_HOST='hf4all-bingo.hf.space' // 后台服务,默认不需要修改
const BING_COOKIE = '' // 换成你自己的 BING_COOKIE,操作参见 README.md

export default {
async handleOptions(request) {
Expand Down Expand Up @@ -63,14 +64,18 @@ export default {
return this.handleWebSocket(headers)
}
if (uri.pathname.startsWith('/turing/')) {
if (BING_COOKIE) {
headers.set('cookie', BING_COOKIE)
}
uri.host = 'www.bing.com'
} else {
if (uri.protocol === 'http:' && !/^[0-9.:]+$/.test(TARGET_HOST)) {
uri.protocol = 'https:';
}
headers.set('x-endpoint', SITE_HOST || uri.host)
headers.set('x-ws-endpoint', SITE_HOST || uri.host)
// headers.set('x-ws-endpoint', SITE_HOST || uri.host)
uri.host = TARGET_HOST
uri.port = TARGET_HOST.split(':')[1] || ''
}
headers.set('Host', uri.host)
return fetch(uri.toString(), {
Expand Down
16 changes: 11 additions & 5 deletions src/components/settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
} from '@/components/ui/dialog'
import { Button } from './ui/button'
import { Input } from './ui/input'
import { ChunkKeys, parseCookies, extraCurlFromCookie, encodeHeadersToCookie, getCookie, setCookie } from '@/lib/utils'
import { ChunkKeys, parseCookies, extraCurlFromCookie, parseHeadersFromCurl, encodeHeadersToCookie, setCookie } from '@/lib/utils'
import { ExternalLink } from './external-link'
import { useCopyToClipboard } from '@/lib/hooks/use-copy-to-clipboard'

Expand Down Expand Up @@ -42,14 +42,18 @@ export function Settings() {
return
}
if (RegExp.$1 === 'cn') {
toast.error('你配置的国内域名 cn.bing.com 仅支持画图')
toast.error('你配置的国内域名 cn.bing.com 需要启用此选项')
setImageOnly(true)
setHistory(false)
return
}
setImageOnly(checked)
} else {
setImageOnly(checked)
}
if (checked) {
setHistory(false)
}
}, [curlValue])

if (loc === 'settings') {
Expand Down Expand Up @@ -81,9 +85,6 @@ export function Settings() {
placeholder="在此填写用户信息,格式: curl 'https://www.bing.com/turing/captcha/challenge' ..."
onChange={e => {
setCurlValue(e.target.value)
if (!/^\s*curl ['"]https:\/\/www\.bing\.com\/turing\/captcha\/challenge['"]/.test(e.target.value)) {
setImageOnly(true)
}
}}
/>
<div className="flex gap-2">
Expand All @@ -102,6 +103,7 @@ export function Settings() {
<div className="flex gap-2">
<Switch
checked={enabledHistory}
disabled={imageOnly}
className={`${enabledHistory ? 'bg-blue-600' : 'bg-gray-200'} relative inline-flex h-6 w-11 items-center rounded-full`}
onChange={(checked: boolean) => setHistory(checked)}
>
Expand All @@ -116,6 +118,10 @@ export function Settings() {
转成 BING_HEADER 并复制
</Button>

<Button variant="ghost" className="bg-[#F5F5F5] hover:bg-[#F2F2F2]" onClick={() => copyToClipboard(parseHeadersFromCurl(curlValue).cookie)}>
获取 BING_COOKIE 并复制
</Button>

<DialogFooter className="items-center">
<Button
variant="secondary"
Expand Down

0 comments on commit a4568e4

Please sign in to comment.