// ==UserScript==
// @name BT4G访问
// @author wangzijian0@vip.qq.com
// @description 绕过国内网络限制访问BT4G
// @version 1.0.2.20250404
// @icon https://github.githubassets.com/assets/mona-loading-default-c3c7aad1282f.gif
// @match *://bt4gprx.com/*
// @match *://*.bt4g.com/*
// @match *://bt4g.com/*
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @namespace https://greasyfork.org/users/1453515
// @license MIT
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
// 兼容不同用户脚本管理器的API差异
const GM_xhr = typeof GM !== 'undefined' && GM.xmlHttpRequest ? GM.xmlHttpRequest : GM_xmlhttpRequest;
if (!GM_xhr) {
console.error('BT4G访问: 当前用户脚本管理器不支持GM.xmlHttpRequest或GM_xmlhttpRequest');
return;
}
// 检查当前域名是否属于 BT4G 相关站点
const isBT4G = /^(.*\.)?bt4g(prx)?\.com$/.test(window.location.hostname);
if (isBT4G) {
// 防止iOS Stay中的无限刷新
if (sessionStorage.getItem('bt4g_script_processed') === 'true') {
return;
}
sessionStorage.setItem('bt4g_script_processed', 'true');
const proxyUrl = 'https://api.allorigins.win/raw?url=' + encodeURIComponent(window.location.href);
try {
GM_xhr({
method: 'GET',
url: proxyUrl,
timeout: 15000,
onload: function(response) {
if (response.status >= 200 && response.status < 300) {
// 使用更安全的方式替换页面内容
const newDoc = document.open('text/html', 'replace');
newDoc.write(response.responseText);
newDoc.close();
// 清除标记以便下次访问可以重新加载
setTimeout(() => {
sessionStorage.removeItem('bt4g_script_processed');
}, 1000);
} else {
showError(`代理请求失败,状态码: ${response.status}`);
sessionStorage.removeItem('bt4g_script_processed');
}
},
onerror: function(error) {
console.error('BT4G访问代理失败:', error);
showError('代理访问失败,请检查网络或更换代理服务!');
sessionStorage.removeItem('bt4g_script_processed');
},
ontimeout: function() {
showError('代理请求超时,请重试或检查网络连接');
sessionStorage.removeItem('bt4g_script_processed');
}
});
} catch (e) {
console.error('BT4G访问: 请求发送失败', e);
showError('脚本执行出错,请检查控制台日志');
sessionStorage.removeItem('bt4g_script_processed');
}
}
function showError(message) {
// 创建更友好的错误提示界面
const errorDiv = document.createElement('div');
errorDiv.style.position = 'fixed';
errorDiv.style.top = '0';
errorDiv.style.left = '0';
errorDiv.style.right = '0';
errorDiv.style.backgroundColor = '#ffebee';
errorDiv.style.color = '#c62828';
errorDiv.style.padding = '15px';
errorDiv.style.zIndex = '9999';
errorDiv.style.textAlign = 'center';
errorDiv.style.fontFamily = 'Arial, sans-serif';
errorDiv.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';
errorDiv.innerHTML = `
BT4G访问错误: ${message}
`;
const retryBtn = errorDiv.querySelector('button');
retryBtn.onclick = function() {
errorDiv.remove();
sessionStorage.removeItem('bt4g_script_processed');
window.location.reload();
};
document.body.appendChild(errorDiv);
}
})();