theme-shoka-x / hexo-theme-shokaX

a hexo theme based on shoka
https://docs-hexo.shokax.top
GNU Affero General Public License v3.0
252 stars 26 forks source link

webcache.cn已经不再提供当前版本的fancybox.css #297

Open TrueRou opened 2 days ago

TrueRou commented 2 days ago

在开始之前......

问题发生位置

其他问题

问题描述

https://npm.webcache.cn/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css 返回403 Forbidden, 可能导致fancybox无法加载, 文章中的图片点击后样式出现问题

复现步骤

No response

相关配置

No response

注意事项

FidStyle commented 2 days ago

近期各cdn停止维护,目前可用: https://fastly.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css https://unpkg.com/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css https://npm.elemecdn.com/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css

目前可用性(速度) npm.elemecdn.com > unpkg.com > fastly.jsdelivr.net 其中npm.elemecdn.com可能不太全面,具体表现为: 同时访问三者的npm包:/jquery@3/dist/jquery.min.js,只有npm.elemecdn.com返回的是jQuery v3.5.1 ,其余均为jQuery v3.7.1

@zkz098 @D-Sketon 是否有必要替换cdn

FidStyle commented 2 days ago

很奇怪,npm.webcache.cn这个链接当我从本Issue点击后是能够访问的,怀疑对方做了referer检测(特征很像),非各大型网站直接ban(),至少github是能够访问的。 image image

zkz098 commented 2 days ago

目前来看应该fancybox换photoswipe然后本地引入,现版本这个fancybox已经太老了,维护的价值不大。ShokaX 0.4.6 支持 esbuild 动态捆绑 CSS,所以photoswipe不需要走CDN

zkz098 commented 2 days ago

npm.webcache.cn不稳定,可能跟dns缓存有关(猜) image image

拿itdog扫了一下,国内的所有节点都是403但国外正常,可能暂时屏蔽国内访问了

FidStyle commented 2 days ago

基本确定npm.webcache.cn限制referer了,乐

import requests

def check_url_accessibility(url, referer=None):
    headers = {}
    if referer:
        headers['Referer'] = referer
    try:
        response = requests.head(url, headers=headers)
        if response.status_code == 200:
            return True
        else:
            return False
    except requests.RequestException as e:
        print(f"Error accessing {url}: {e}")
        return False

# Example usage
url = "https://npm.webcache.cn/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"
referer = "https://github.com/theme-shoka-x/hexo-theme-shokaX/issues/297"

# Check URL accessibility with Referer
is_accessible_with_referer = check_url_accessibility(url, referer)
print(f"URL {url} is accessible with Referer {referer}: {is_accessible_with_referer}")

# Check URL accessibility without Referer
is_accessible_without_referer = check_url_accessibility(url)
print(f"URL {url} is accessible without Referer: {is_accessible_without_referer}")

自行测试一下,我这是有区别的 image

zkz098 commented 2 days ago

基本确定npm.webcache.cn限制referer了,乐

import requests

def check_url_accessibility(url, referer=None):
    headers = {}
    if referer:
        headers['Referer'] = referer
    try:
        response = requests.head(url, headers=headers)
        if response.status_code == 200:
            return True
        else:
            return False
    except requests.RequestException as e:
        print(f"Error accessing {url}: {e}")
        return False

# Example usage
url = "https://npm.webcache.cn/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"
referer = "https://github.com/theme-shoka-x/hexo-theme-shokaX/issues/297"

# Check URL accessibility with Referer
is_accessible_with_referer = check_url_accessibility(url, referer)
print(f"URL {url} is accessible with Referer {referer}: {is_accessible_with_referer}")

# Check URL accessibility without Referer
is_accessible_without_referer = check_url_accessibility(url)
print(f"URL {url} is accessible without Referer: {is_accessible_without_referer}")

自行测试一下,我这是有区别的 image

是这样的 image

zkz098 commented 2 days ago

image 盲猜配置失误,因为当Referer直接为https://github.com时也无法访问,但https://github.com/是正常的(

FidStyle commented 2 days ago

image 盲猜配置失误,因为当Referer直接为https://github.com时也无法访问,但https://github.com/是正常的(

确实,我用插件测试了,奇怪