您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
修改发送给 GitHub 图片服务器的 Accept-Language 请求头,避免中文用户遇到 429 错误
当前为
- // ==UserScript==
- // @name GitHub Images Accept-Language Modifier
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 修改发送给 GitHub 图片服务器的 Accept-Language 请求头,避免中文用户遇到 429 错误
- // @author Codming
- // @match *://*.github.com/*
- // @grant GM_xmlhttpRequest
- // @run-at document-start
- // @connect camo.githubusercontent.com
- // @connect avatars.githubusercontent.com
- // ==/UserScript==
- (function() {
- 'use strict';
- // 拦截 XMLHttpRequest
- const originalXhrOpen = XMLHttpRequest.prototype.open;
- const originalXhrSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
- XMLHttpRequest.prototype.open = function(method, url) {
- this._url = url;
- return originalXhrOpen.apply(this, arguments);
- };
- XMLHttpRequest.prototype.setRequestHeader = function(header, value) {
- // 检查 URL 是否匹配目标域名
- if (this._url &&
- (this._url.includes('camo.githubusercontent.com') ||
- this._url.includes('avatars.githubusercontent.com'))) {
- // 如果是 Accept-Language 头,修改值
- if (header.toLowerCase() === 'accept-language') {
- value = value.replace('zh-CN', 'en-US').replace('zh;', 'en;');
- console.log('Modified Accept-Language for:', this._url, 'New value:', value);
- }
- }
- return originalXhrSetRequestHeader.call(this, header, value);
- };
- // 拦截 fetch 请求
- const originalFetch = window.fetch;
- window.fetch = function(resource, init) {
- const url = resource instanceof Request ? resource.url : resource;
- if (url &&
- (url.includes('camo.githubusercontent.com') ||
- url.includes('avatars.githubusercontent.com'))) {
- init = init || {};
- init.headers = init.headers || {};
- // 创建修改后的 headers
- const newHeaders = new Headers(init.headers);
- if (newHeaders.has('accept-language')) {
- const langValue = newHeaders.get('accept-language');
- const newLangValue = langValue.replace('zh-CN', 'en-US').replace('zh;', 'en;');
- newHeaders.set('accept-language', newLangValue);
- console.log('Modified fetch Accept-Language for:', url, 'New value:', newLangValue);
- }
- // 如果 resource 是 Request 对象
- if (resource instanceof Request) {
- const newRequest = new Request(resource, {
- headers: newHeaders
- });
- return originalFetch.call(this, newRequest, init);
- } else {
- // 如果是 URL 字符串
- init.headers = newHeaders;
- return originalFetch.call(this, resource, init);
- }
- }
- return originalFetch.apply(this, arguments);
- };
- })();