Skip to content

feat: add GXNAS blog route#21982

Open
Franklittleboy wants to merge 15 commits into
DIYgod:masterfrom
Franklittleboy:feat/gxnas-route
Open

feat: add GXNAS blog route#21982
Franklittleboy wants to merge 15 commits into
DIYgod:masterfrom
Franklittleboy:feat/gxnas-route

Conversation

@Franklittleboy
Copy link
Copy Markdown

Involved Issue / 该 PR 相关 Issue

Close #

Example for the Proposed Route(s) / 路由地址示例

/gxnas

New RSS Route Checklist / 新 RSS 路由检查表

  • New Route / 新的路由
  • Anti-bot or rate limit / 反爬/频率限制
    • If yes, do your code reflect this sign? / 如果有, 是否有对应的措施?
  • Date and time / 日期和时间
    • Parsed / 可以解析
    • Correct time zone / 时区正确
  • New package added / 添加了新的包
  • Puppeteer

Note / 说明

Add RSS feed for GXNAS博客, a Chinese NAS technology blog covering Synology tutorials, soft routers, and AI topics.

The site uses Cloudflare protection which blocks the WordPress /feed/ endpoint, so this route scrapes the homepage HTML for article list instead. Full article content is not fetched because detail pages also return Cloudflare block pages from server-side requests.

@github-actions github-actions Bot added route auto: not ready to review Users can't get the RSS feed output according to automated testing results labels May 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>FetchError: [GET] &quot;https://wp.gxnas.com&quot;: 403 Forbidden
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: c91890a3

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

Auto Review

  • [Rule 26] docker-compose.yml: Contains personal/local configuration changes unrelated to the route addition (custom image franksun123/rsshub:latest, network_mode: host, removed services/healthchecks, environment format/volume changes). Revert these changes.

@github-actions github-actions Bot added auto: not ready to review Users can't get the RSS feed output according to automated testing results and removed auto: not ready to review Users can't get the RSS feed output according to automated testing results labels May 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>FetchError: [GET] &quot;https://wp.gxnas.com&quot;: 403 Forbidden
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: a2c725c3

- Replace parseInt with Number.parseInt (unicorn/prefer-number-properties)
- Simplify ternary pubDate assignment (no-unneeded-ternary)
- Add features block with antiCrawler: true for wp.gxnas.com
@Franklittleboy
Copy link
Copy Markdown
Author

Note: The CI route test failure is expected. The target site wp.gxnas.com is protected by Cloudflare, which returns 403 for server-side requests from GitHub Actions IPs. This route works correctly on self-hosted instances (where the IP is not blocked by Cloudflare). The route has antiCrawler: true marked in features. Please review manually. Thanks!

注:CI 路由测试失败是预期行为。目标网站 wp.gxnas.com 使用 Cloudflare 防护,对 GitHub Actions 的 IP 返回 403。该路由在自建实例上可正常使用(自建 IP 不受 Cloudflare 拦截)。已在 features 中标记 antiCrawler: true,请维护者手动 review,谢谢!

…loudflare bypass

- Remove external FlareSolverr dependency (requires separate Docker service)
- Use RSSHub's built-in getPlaywrightPage() utility instead
- Set requirePuppeteer: true in route features
- Intercept requests to only load document resources (faster page load)
- This aligns with other anti-crawler routes like javdb, sotwe, xueqiu

Note: CI will still fail due to Cloudflare blocking GitHub Actions IPs,
same as javdb (DIYgod#21269) and sotwe routes. Self-hosted instances with
Chromium work fine.
Comment thread lib/routes/gxnas/index.ts Fixed
@Franklittleboy
Copy link
Copy Markdown
Author

改用 RSSHub 内置 Playwright 方案

已将 FlareSolverr 外部依赖替换为 RSSHub 内置的 getPlaywrightPage() 方案,与 javdb、sotwe、xueqiu 等路由保持一致。

变更内容:

  • ❌ 移除 FlareSolverr 依赖(需额外部署 Docker 服务,维护者无法在 CI 中配置)
  • ✅ 使用 RSSHub 原生 @/utils/playwright 工具
  • requirePuppeteer: true 标记(CI 已安装 Chromium)
  • ✅ 拦截非 document 请求加速页面加载

关于 CI 失败:
CI 仍然会因为 Cloudflare 拦截 GitHub Actions IP 而 403,这与以下已合并路由的情况完全一致:

自建实例(含 Chromium)可正常使用。

@github-actions github-actions Bot removed the auto: not ready to review Users can't get the RSS feed output according to automated testing results label May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>Error: this route is empty, please check the original site or &lt;a href=&quot;https://github.com/DIYgod/RSSHub/issues/new/choose&quot;&gt;create an issue&lt;/a&gt;
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: bcfbff28

@github-actions github-actions Bot added the auto: not ready to review Users can't get the RSS feed output according to automated testing results label May 13, 2026
Comment thread lib/routes/gxnas/index.ts Fixed
@github-actions github-actions Bot added auto: not ready to review Users can't get the RSS feed output according to automated testing results and removed auto: not ready to review Users can't get the RSS feed output according to automated testing results labels May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>Error: this route is empty, please check the original site or &lt;a href=&quot;https://github.com/DIYgod/RSSHub/issues/new/choose&quot;&gt;create an issue&lt;/a&gt;
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: e6f82248

Comment thread lib/routes/gxnas/index.ts Fixed
@github-actions github-actions Bot added auto: not ready to review Users can't get the RSS feed output according to automated testing results and removed auto: not ready to review Users can't get the RSS feed output according to automated testing results labels May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>Error: this route is empty, please check the original site or &lt;a href=&quot;https://github.com/DIYgod/RSSHub/issues/new/choose&quot;&gt;create an issue&lt;/a&gt;
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: 82a8aa08

@github-actions github-actions Bot removed the auto: not ready to review Users can't get the RSS feed output according to automated testing results label May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>Error: this route is empty, please check the original site or &lt;a href=&quot;https://github.com/DIYgod/RSSHub/issues/new/choose&quot;&gt;create an issue&lt;/a&gt;
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: 3fbc37c7

@github-actions github-actions Bot added the auto: not ready to review Users can't get the RSS feed output according to automated testing results label May 13, 2026
@github-actions github-actions Bot added auto: not ready to review Users can't get the RSS feed output according to automated testing results and removed auto: not ready to review Users can't get the RSS feed output according to automated testing results labels May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>Error: this route is empty, please check the original site or &lt;a href=&quot;https://github.com/DIYgod/RSSHub/issues/new/choose&quot;&gt;create an issue&lt;/a&gt;
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: d5e38c83

… Cloudflare JS challenge

Playwright with request interception blocks Cloudflare challenge scripts,
preventing the browser from passing the JS verification. FlareSolverr
works because it lets the full challenge flow complete before returning
the final HTML.

Also fixed: simple-import-sort compliance (blank line between external/
internal groups, alphabetical order within groups).
Comment thread lib/routes/gxnas/index.ts
});
sessionCreated = true;
logger.debug(`FlareSolverr session created: ${SESSION_ID}`);
} catch (e) {
@github-actions github-actions Bot added auto: not ready to review Users can't get the RSS feed output according to automated testing results and removed auto: not ready to review Users can't get the RSS feed output according to automated testing results labels May 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Successfully generated as following:

http://localhost:1200/gxnas - Failed ❌
HTTPError: Response code 503 (Service Unavailable)

Error Message:<br/>FetchError: [POST] &quot;http://flaresolverr:8191/v1&quot;: &lt;no response&gt; fetch failed
Route: /gxnas
Full Route: /gxnas
Node Version: v24.15.0
Git Hash: f72b585d

Comment thread docker-compose.yml
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not modify the docker compose file.

Comment thread lib/routes/gxnas/index.ts
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';

const FLARESOLVERR_URL = process.env.FLARESOLVERR_URL || 'http://flaresolverr:8191/v1';
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not read process.env in your own route.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto: not ready to review Users can't get the RSS feed output according to automated testing results route

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants