Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion]: 关于 Mikanani.me 被墙的临时解决方法。 #196

Closed
EstrellaXD opened this issue Apr 21, 2023 · 23 comments
Closed

[Discussion]: 关于 Mikanani.me 被墙的临时解决方法。 #196

EstrellaXD opened this issue Apr 21, 2023 · 23 comments

Comments

@EstrellaXD
Copy link
Owner

EstrellaXD commented Apr 21, 2023

项目讨论

TL;DR

  • 使用代理
  • 使用 CloudFlare Worker 进行反代,并且替换 RSS 中所有的 mikanani.me 域名。

Update 5.11

  • 蜜柑计划更新了新的域名 https://mikanime.tv,请在不打开代理的情况下配合 AB 使用。

Update

在 2.6 版本更新中 AB 额外提供了两种解决被墙的方案。

  • 可以在 WebUI 中的 源站链接 中修改为自己反代过的 URL
  • 使用代理之后可以使用 AB 自身作为反代节点。

具体可以看更新日志

蜜柑计划于昨日喜提 GFW,因此 AB 中绝大部分依赖蜜柑的功能,在不设置代理的情况下无法正常工作。同样,传给 qBittorrent 的 RSS 链接以及 RSS 中的种子链接也因为无法直连无法正常工作。

给大家两种临时的解决方案:

代理

  1. AB 中自带了代理配置,如果要配置代理请按照 wiki 中的方式正确配置 HTTP 或者 Socks 代理。配置完成可以规避墙的问题。
  2. QB 中也需要配置代理,请按照如下截图对 QB 中进行代理设置 (Socks 同理)

image

CloudFlare Workers

根据 OpenAI 被墙的经验,我们也可以通过反向代理的方式解决。具体如何申请域名绑定 CloudFlare 在此不再赘述。在 Workers 中添加如下代码即可以用你自己的域名访问蜜柑计划并且解析下载 RSS 链接中的种子。

const TELEGRAPH_URL = 'https://mikanani.me';
const MY_DOMAIN = 'https://yourdomain.com'

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url);
  url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');

  const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
    redirect: 'manual'
  });

  const response = await fetch(modifiedRequest);
  const contentType = response.headers.get('Content-Type') || '';

  // 如果内容类型是 RSS,才进行替换操作
  if (contentType.includes('application/xml')) {
    const text = await response.text();
    const replacedText = text.replace(/https?:\/\/mikanani\.me/g, MY_DOMAIN);
    const modifiedResponse = new Response(replacedText, response);

    // 添加允许跨域访问的响应头
    modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

    return modifiedResponse;
  } else {
    const modifiedResponse = new Response(response.body, response);

    // 添加允许跨域访问的响应头
    modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

    return modifiedResponse;
  }
}

不过使用反代时 AB 的番剧补全功能会失效,请等待下个版本修复。

AB 也在积极开发应对此次冲击。

祝好!

Estrella

@MiaoJiawei
Copy link

不得行,反代也墙了就离谱

@MiaoJiawei
Copy link

不得行,反代也墙了就离谱

在香港的云主机上面搞了个脚本,直接定时把RSS订阅存成XML文件扔网站根目录,一劳永逸解决问题

@EstrellaXD
Copy link
Owner Author

不得行,反代也墙了就离谱

需要用自己没有被墙的域名,不要用 CF 默认的

@Domgur0
Copy link

Domgur0 commented Apr 23, 2023

根据https://blog.csdn.net/qq_39010320/article/details/119923538
这篇文章,发现vercel也能实现反向代理,并且能用二级域名绑定。只可惜我不会替换rss里面的域名,大佬能教教嘛(纯小白没学过)

@SilentC1ty
Copy link

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

@lersh
Copy link

lersh commented Apr 24, 2023

我是通过代理解决的

@Domgur0
Copy link

Domgur0 commented Apr 24, 2023

可以路由器挂代理吧doge,linux应该也有代理软件

@jfmoe
Copy link

jfmoe commented Apr 24, 2023

开了代理,BT下载上传会不会也走代理了,流量有限如何规避。

@Slinet6056
Copy link

开了代理,BT下载上传会不会也走代理了,流量有限如何规避。

可以在代理软件里面设置仅常用端口比如80、443走代理吧

@corvo007
Copy link

corvo007 commented Apr 24, 2023

根据我的测试,需要对原worker的js做一处改动,不然无法登录成功:

const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
-   redirect: 'follow'
+   redirect:'manual'
  });

如果设置为follow,则worker会报以下错误:TypeError: A request with a one-time-use body (it was initialized from a stream, not a buffer) encountered a redirect requiring the body to be retransmitted. To avoid this error in the future, construct this request from a buffer-like body initializer.
但是设置为manual后将重定向交由浏览器处理,就可以正常登录。
ref: https://stackoverflow.com/questions/55920957/cloudflare-worker-typeerror-one-time-use-body

@EstrellaXD
Copy link
Owner Author

根据我的测试,需要对原worker的js做一处改动,不然无法登录成功:

const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
-   redirect: 'follow'
+   redirect:'manual'
  });

如果设置为follow,则worker会自动重定向,始终都无法登录,但是设置为manual后将重定向交由浏览器处理,就可以正常登录。 ref: https://stackoverflow.com/questions/55920957/cloudflare-worker-typeerror-one-time-use-body

确实没有考虑登陆的问题,因为只是替换 RSS 地址即可,我把这段加进去。

@corvo007
Copy link

@EstrellaXD 我可以贡献一个刚刚搭好的反代域名,支持登录、订阅和获取RSS:https://mikan.ellye.org/

@836773304
Copy link

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

SSR对局域网开放,QB和AB配置代理 IP填写 开着ssr的机器的ip,端口填ssr里面局域网的端口

@SilentC1ty
Copy link

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

SSR对局域网开放,QB和AB配置代理 IP填写 开着ssr的机器的ip,端口填ssr里面局域网的端口

了解过这种办法,但是没办法让电脑一直挂着代理(流量限制),且不是都用电脑;这样是不是软路由的方法最好

@EstrellaXD
Copy link
Owner Author

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

SSR对局域网开放,QB和AB配置代理 IP填写 开着ssr的机器的ip,端口填ssr里面局域网的端口

了解过这种办法,但是没办法让电脑一直挂着代理(流量限制),且不是都用电脑;这样是不是软路由的方法最好

可以 docker 一个 clash

@SilentC1ty
Copy link

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

SSR对局域网开放,QB和AB配置代理 IP填写 开着ssr的机器的ip,端口填ssr里面局域网的端口

了解过这种办法,但是没办法让电脑一直挂着代理(流量限制),且不是都用电脑;这样是不是软路由的方法最好

可以 docker 一个 clash

ok,下班回去研究下

@836773304
Copy link

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

SSR对局域网开放,QB和AB配置代理 IP填写 开着ssr的机器的ip,端口填ssr里面局域网的端口

了解过这种办法,但是没办法让电脑一直挂着代理(流量限制),且不是都用电脑;这样是不是软路由的方法最好

可以 docker 一个 clash

ok,下班回去研究下

我用了Clash,完美解决

@SilentC1ty
Copy link

我电脑上用的ShadowsocksR,有什么办法获取到对应的代理参数吗

SSR对局域网开放,QB和AB配置代理 IP填写 开着ssr的机器的ip,端口填ssr里面局域网的端口

了解过这种办法,但是没办法让电脑一直挂着代理(流量限制),且不是都用电脑;这样是不是软路由的方法最好

可以 docker 一个 clash

ok,下班回去研究下

我用了Clash,完美解决

目前ab连接mikan没问题了,等今晚看下载会不会走代理

@EstrellaXD EstrellaXD pinned this issue Apr 26, 2023
@DarkKnight0-0
Copy link

@EstrellaXD 我可以贡献一个刚刚搭好的反代域名,支持登录、订阅和获取RSS:https://mikan.ellye.org/

好像被墙了。。。我自己搭的用了两天也被墙了。。。

@MegumiN152
Copy link

反代也不行,还是要开梯子才能进

@mcoder2014
Copy link

mcoder2014 commented May 3, 2023

我说怎么好久没有更新,原来是被墙了。。

@MegumiN152
Copy link

现在是可以进了,但是如果不用ab直接用镜像网站的rss订阅的话,好像会报url错误

Repository owner locked as too heated and limited conversation to collaborators May 3, 2023
@EstrellaXD
Copy link
Owner Author

迁移至 Wiki 中

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests