RssHub + Vercel :在 Vercel 上免费部署你的RssHub!

RssHub 简介

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。
RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容。

官方文档:介绍 | RssHub (需要挂代理

他人制作的镜像站:介绍 | RssHub

配置过程

Vercel 相关

注册

打开 Sign Up ,选择 Hobby ,随意填写你的姓名,然后点击 Continue with Github 关联你的Github账号
注册完之后,登录你的账号

部署

打开此链接来进行一件部署:https://vercel.com/import/project?template=https://github.com/DIYgod/RSSHub

img

点击 GitHub
随后在 Repository Name 处填写 RssHub (其实随便填什么都没关系,只是一个名称)

img

填写完毕后,点击 Create
接着就是慢慢等待项目的部署

img

当出现 Congratulations! 时,部署成功。随后点击 Continue to Dashboard 进入控制台。

img

绑定自定义域名

如果你看到如下界面,那说明配置成功。
但是还有一个问题。
Vercel 给你的域名已被 DNS污染(就是被墙了
下图箭头所指出就是官方给你的域名,你可以在国内网络环境下测试能否打开。
如果你使用RssHub时的网络环境可以正常访问Google,那请跳到下一章节
如果不能,请继续往下看。

img

转到 Settings,选择 Domains

img
img

可以看到,此处已经有一个官方自带的域名了

img

此时,请将你想绑定的域名输入到上方输入框中,点击 Add。

img

由于你还没有配置域名解析,它会报错 Invalid Configuration

img

此时你需要打开你的域名注册厂商,选择 域名解析 ,将上图所需的解析信息填入,点击保存,等待生效即可。

img
img

完成!

img

Pixiv refreshToken 获取

完成以上安装后,可以生成大多数网站的RSS,但部分RSS需要单独配置后方可生成,如 pixivdisqustwitteryoutubetelegramgithub

部分 RSS 模块配置 文档镜像站地址:部分 RSS 模块配置

Pixiv 为例:

img

我们需要拿到Pixiv的 refreshToken 才能订阅Pixiv的内容。
不然就会是这样:

img

方法一

此操作机需要安装 Python 环境

  1. 下载 Chromedriver

    CNPM Binaries Mirror

    提示:请下载与你的浏览器相对应版本号的文件。如果没有找到,则选择相近的。

    # 查看浏览器版本号方法
    
    # Edge:
    在浏览器中输入 edge://version
    
    # Chrome
    在浏览器中输入 chrome://version
    
  2. 下载脚本

    pixiv_auth.py

    注:Chromedriver 和 pixiv_auth.py 需要在同一个目录

  3. 安装requests模块

    Windows端:

     pip install requests
    

    其他客户端请参考 https://stackoverflow.com/questions/17309288/importerror-no-module-named-requests

  4. 在Python安装selenium

     pip install selenium
    
  5. 启动你的代理,并且修改 pixiv_auth.py 。这里可以直接 借鉴我的

    #!/usr/bin/env python
    
    from argparse import ArgumentParser
    from base64 import urlsafe_b64encode
    from hashlib import sha256
    from pprint import pprint
    from secrets import token_urlsafe
    from sys import exit
    from urllib.parse import urlencode
    from webbrowser import open as open_url
    
    import requests
    
    # Latest app version can be found using GET /v1/application-info/android
    USER_AGENT = "PixivAndroidApp/5.0.234 (Android 11; Pixel 5)"
    REDIRECT_URI = "https://app-api.pixiv.net/web/v1/users/auth/pixiv/callback"
    LOGIN_URL = "https://app-api.pixiv.net/web/v1/login"
    AUTH_TOKEN_URL = "https://oauth.secure.pixiv.net/auth/token"
    CLIENT_ID = "MOBrBDS8blbauoSck0ZfDbtuzpyT"
    CLIENT_SECRET = "lsACyCD94FhDUtGTXi3QzcFE2uU1hqtDaKeqrdwj"
    
    
    def s256(data):
        """S256 transformation method."""
    
        return urlsafe_b64encode(sha256(data).digest()).rstrip(b"=").decode("ascii")
    
    
    def oauth_pkce(transform):
        """Proof Key for Code Exchange by OAuth Public Clients (RFC7636)."""
    
        code_verifier = token_urlsafe(32)
        code_challenge = transform(code_verifier.encode("ascii"))
    
        return code_verifier, code_challenge
    
    
    def print_auth_token_response(response):
        data = response.json()
    
        try:
            access_token = data["access_token"]
            refresh_token = data["refresh_token"]
        except KeyError:
            print("error:")
            pprint(data)
            exit(1)
    
        print("access_token:", access_token)
        print("refresh_token:", refresh_token)
        print("expires_in:", data.get("expires_in", 0))
    
    
    def login():
        code_verifier, code_challenge = oauth_pkce(s256)
        login_params = {
            "code_challenge": code_challenge,
            "code_challenge_method": "S256",
            "client": "pixiv-android",
        }
    
        open_url(f"{LOGIN_URL}?{urlencode(login_params)}")
    
        try:
            code = input("code: ").strip()
        except (EOFError, KeyboardInterrupt):
            return
    
        response = requests.post(
            AUTH_TOKEN_URL,
            data={
                "client_id": CLIENT_ID,
                "client_secret": CLIENT_SECRET,
                "code": code,
                "code_verifier": code_verifier,
                "grant_type": "authorization_code",
                "include_policy": "true",
                "redirect_uri": REDIRECT_URI,
            },
            headers={"User-Agent": USER_AGENT},
            proxies={
                'https': 'http://127.0.0.1:10809' 
            }
        )
    
        print_auth_token_response(response)
    
    
    def refresh(refresh_token):
        response = requests.post(
            AUTH_TOKEN_URL,
            data={
                "client_id": CLIENT_ID,
                "client_secret": CLIENT_SECRET,
                "grant_type": "refresh_token",
                "include_policy": "true",
                "refresh_token": refresh_token,
            },
            headers={"User-Agent": USER_AGENT},
        )
        print_auth_token_response(response)
    
    
    def main():
        parser = ArgumentParser()
        subparsers = parser.add_subparsers()
        parser.set_defaults(func=lambda _: parser.print_usage())
        login_parser = subparsers.add_parser("login")
        login_parser.set_defaults(func=lambda _: login())
        refresh_parser = subparsers.add_parser("refresh")
        refresh_parser.add_argument("refresh_token")
        refresh_parser.set_defaults(func=lambda ns: refresh(ns.refresh_token))
        args = parser.parse_args()
        args.func(args)
    
    
    if __name__ == "__main__":
        main()
    
    

    提示:如果你用的代理工具不是 V2rayN 如果你的代理端口不是 10809 ,那么请自行修改第 82 行的代理端口。

  6. 目录下打开 cmd ,输入

     python pixiv_auth.py login
    

    浏览器会弹出 Pixiv 登录页面。
    打开浏览器 开发者模式(F12 ,切换到 网络 选项卡,勾选 保留日志
    并在过滤文本框中输入 callback? 。如下图所示,右键复制code的值,输入到终端中:

    img

    img

    完成!

方法二(推荐

这个方法适用于已经在使用Mirai框架中的用户。
相对于 方法一 来说,它不需要配置代理端口,也不用去安装什么其他的库。
它只需要两个东西:Steam++(已更名为 Watt ToolkitMirai-Console-Loader

其中关于mcl(即mirai-console-loader 的配置安装相关知识可以查看我的 这一篇 文章

  1. 下载安装 Watt Toolkit

    Steam++ 官网:https://steampp.net/,请自行选择你所需要的版本进行下载安装

  2. 进行网络加速

    打开 Watt Toolkit ,将列表翻动到最下方,选择 其他网站 ,勾选,右上角加速模式选择 Hosts代理模式 ,点击 一键加速 启动网络加速。

    img
    img

  3. 前往 https://pixiv.net 注册账号

  4. 下载插件 pixiv-helperchat-command/mcl/plugins

     # pixiv-helper下载地址
    
     https://ghproxy.com/https://github.com/cssxsh/pixiv-helper/releases/download/v2.0.0-RC/pixiv-helper-2.0.0-RC.mirai2.jar
    
     # chat-command下载地址
    
     https://ghproxy.com/https://github.com/project-mirai/chat-command/releases/download/v0.6.0/chat-command-0.6.0.mirai.jar
    

    其中关于mcl(即mirai-console-loader 的配置安装相关知识可以查看我的 这一篇 文章

  5. 安装cookie获取插件

    打开浏览器,访问 https://www.crxsoso.com/webstore/detail/fngmhnnpilhplaeedifhccceomclgfbg 下载 chrome插件 EditThisCookie

    安装完毕后请让此插件在工具栏显示。

    img

  6. 获取cookie

    打开 https://pixiv.net,登录账号。

    img

    当显示 Cookie 已复制到剪贴板 时,前往 mcl 主目录创建一个名为 cookie.json 的文件,并将剪贴板中的内容粘贴,保存。

    注意:必须等到页面完全加载完毕才能获取到正确的cookie

  7. 双击启动 mcl.cmd 或 在终端输入 ./mcl 启动mcl。

  8. 启动QQ,进入到你与bot的私聊中。

    通过Cookie,登录PIXIV

     /pixiv cookie
    

    img

    登录成功!

  9. 最后一步,获取refreshToken。
    在你与bot的私聊中输入

     /pixiv pool
    

    可以看到你的账户信息。

    img

    请将refreshToken妥善保管,切勿泄露给他人。

配置环境变量

这是一个非常重要的步骤,不算难,只要知道了方法就十分简单。虽然我搞了一晚上才找到方法

打开 https://vercel.com/dashboard ,选择你的项目,点击进入。
点击 View Git Repository ,访问你的仓库。

img

如图所示,创建新文件。

img
img

文件名填写 .env ,文件内容填写:

PIXIV_REFRESHTOKEN=xxxxxxxxxxxxxxxxxxxxx  # 请填写你的refreshToken

如图所示。

img

最后点击 Commit 提交即可。

总结:环境变量在仓库根目录下的 .env文件中添加

格式为: name=value
name 为 环境变量名
value 为 环境变量值

end.

posted @ 2023-04-02 09:48  QiuSYan  阅读(1845)  评论(1编辑  收藏  举报