Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/2234839/fetch-proxy
Avoid cross-domain fetching: use GM.xmlHttpRequest under Grease Monkey and request custom services in other environments for
https://github.com/2234839/fetch-proxy
Last synced: about 1 month ago
JSON representation
Avoid cross-domain fetching: use GM.xmlHttpRequest under Grease Monkey and request custom services in other environments for
- Host: GitHub
- URL: https://github.com/2234839/fetch-proxy
- Owner: 2234839
- Created: 2021-05-07T12:45:53.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-05-08T11:11:51.000Z (over 3 years ago)
- Last Synced: 2024-11-16T15:22:12.615Z (about 1 month ago)
- Language: TypeScript
- Homepage:
- Size: 185 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fetch-proxy
这个项目分为两部分:fetch-proxy service, fetch-proxy lib
- fetch-proxy service
- 提供一个 api 用于代理浏览器发起的请求来避免跨域问题
- fetch-proxy lib
- 和 原生fetch 使用方式一样的函数 (npm package)
- 内部主要逻辑如下
- if (请求目标和当前网页是同一个域): 直接使用原生 fetch
- else (处于油猴脚本的执行环境下): 使用 GM.xmlHttpRequest
- else : 通过原生 fetch 调用 fetch-proxy service## fetch-proxy lib 的使用方式
github 网站设置了 CSP 可以去[我的网站尝试下面的脚本](https://shenzilong.cn)
```js
import { fetch_proxy } from "fetch-proxy_lib";fetch_proxy(`https://zhihu.com`)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
```如果不在油猴环境下使用的话还请自建服务,然后配置 :
```js
fetch_proxy.config.fetch_proxy_service = "https://自建服务地址"
```## fetch-proxy service 的使用方式
自用服务,如有同样的需求***请自行另建服务***,请勿白嫖下面的函数计算。(或者[赞助后使用](https://afdian.net/@llej0))
```js
// fetchproxy.shenzilong.cn 处的云函数位于阿里云,对于被 GFW 的网站访问一般都会超时
fetch(`${"https" || "http"}://fetchproxy.shenzilong.cn`, {
method: "POST",
/** 此处参数参见 node-fetch { input: RequestInfo; init?: RequestInit } */
body: JSON.stringify({
input: "https://zhihu.com",
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
// 在非知乎站点请求知乎网页会触发跨域
fetch(`https://zhihu.com`)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
```## 开发说明
```bash
pnpm i
pnpm run start
```
- https
- 在 https 的站点只能获取其他 https 站点的数据、
- 部署的时候需要替换掉 ssl 目录下的证书 key 和 pem 文件 (pem 文件是私密的,没有上传到 github)