refactor(api): update authentication and request parameters for enhanced compatibility
This commit is contained in:
		
							
								
								
									
										148
									
								
								worker.js
									
									
									
									
									
								
							
							
						
						
									
										148
									
								
								worker.js
									
									
									
									
									
								
							| @@ -4,6 +4,7 @@ addEventListener('fetch', event => { | ||||
|  | ||||
| async function handleRequest(request) { | ||||
|   const url = new URL(request.url); | ||||
|   const cookie = request.headers.get('x-custom-cookie') || ''; // 从自定义请求头获取 cookie | ||||
|  | ||||
|   // 处理 CORS 预检请求 | ||||
|   if (request.method === 'OPTIONS') { | ||||
| @@ -11,7 +12,7 @@ async function handleRequest(request) { | ||||
|       headers: { | ||||
|         'Access-Control-Allow-Origin': '*', | ||||
|         'Access-Control-Allow-Methods': 'POST, OPTIONS', | ||||
|         'Access-Control-Allow-Headers': 'Content-Type, Authorization', | ||||
|         'Access-Control-Allow-Headers': 'Content-Type, Authorization, x-custom-cookie', // 添加自定义请求头 | ||||
|       }, | ||||
|     }); | ||||
|   } | ||||
| @@ -218,12 +219,15 @@ async function recognizeImage(token, imageId) { | ||||
|   const response = await fetch('https://chat.qwenlm.ai/api/chat/completions', { | ||||
|     method: 'POST', | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json', | ||||
|       'User-Agent': 'PostmanRuntime/7.43.0',  | ||||
|       'accept': '*/*', | ||||
|       'authorization': `Bearer ${token}`, | ||||
|       'Content-Type': 'application/json', | ||||
|       'cookie': 'cna=LI8HIAirQyACAWrg3cNOjH8F; _gcl_au=1.1.1200556497.1736728490; xlly_s=1; acw_tc=c2b96feb4d2929a1649ea96dc00590956477696933f61783d23e6c95429ecf74; x-ap=ap-southeast-1; token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjUzZTk0Nzg4LWMwM2QtNDY4Mi05OTNhLWE0ZDNjNGUyZDY0OSIsImV4cCI6MTc0MTE0ODM0MX0.-2hF4l1iJf8r5U6UzoXyc-TFqx0i5luWmtJk0kk8T5o; ssxmod_itna=Yq+hqIxjx=AKi7eitD8IDCWBfbxxl4BtGRDeq7tDRDFqApxDHmLWxoDUxxu2hE80DD0ADnG3BUxGN4tDxiNDAg40iDC4mL37ezTxthtQQhgDCTYCu2rpTCGGE7P3rnTE0M25BA6w3KxxGLDY=DCqhxl4eD4R3Dt4DIDAYDDxDWFeGIDGYD7hb=ymbDm44aYxGy3nbDA3TDbhb5xitYDDUAKeG2igbhDDNheFY49GG7yC0OorHDAqh==GbDjqPD/RxLP+bkXtkh/CTA=BapCeaWxBQD7we3xYE4c=IdqZawfiEwDELx0De/iGKGxdYmPlvzYKGlpVGGoWDqjqQlXnlvnnPDDc=Y9=buiDrP3KYtvS85lmHQDxPoGb0rz0THimDgri0i8B0=nxNCDtYDb30eDBeIG4/g8BvDD; ssxmod_itna2=Yq+hqIxjx=AKi7eitD8IDCWBfbxxl4BtGRDeq7tDRDFqApxDHmLWxoDUxxu2hE80DD0ADnG3BDxDfk7K7e5xDLiARWCTe9A4D/9o1+WeqlSGSWe4dTPhBUq4kzjyE41MPvWM=BtDwWHWiQ4B+GVChGZYlDDoA6gCj2VGnQeqqxeBSiqeT69Cg2Q6qrEGqv/DTQR8MRo3m3E7Gd7mf42Re2lYpNic=beSRp3tCDgWT7khOXGqf2lBpre5BtExlRw6cUwWwDxNSFUl/8Un/RGZz8/jLk2t1XZC79Eb7iRTPTMPn5MTHW2fs1DlsH0z9RxCLW1Rdb2QFhd9biugr+2aTW1oeYAbtORQNMW43+m2Gcb=TuFtQGqhiTqrNfdwSOe8WHSWTr7cRaw833Yzw31d4iN+Q9OO7izUj1uSdYrh4dIvx5CwYD45Vji4EbkiaNQQGbt1hDa8Ymmda3r3lThChY8Nm2IscznS+mS43izuLzUYN94syC3tQi03=u3Q6az931moHSOLY3OFPKoMjqMUDbtebxw=rT2rBAv08uRkWHzFtGp2lUSSb3z41pTZcx/8NB3jD+XnIpLFEw8bv4r58wRLLwubFTQ9cPDv+9k36tvoCYXlso4qGA44E3y737YNBDmUct2Iahxq76iTrlGotG1NBBN=Tx4hkA2Zp887gfc4Tp8V1wGCf49XeA=0Xu3uIKqYQADh0ABmqlQ4w=YVlDPjO9KH2xaG3C8ID5DeY41AxMxR2NIGhSD+5q0UQGx0Ue4dAi0DwbY+f7n1Gwz014LQ2DY+42xI2zG5TmhfDtXehC40aWxfDi0xIGNQ3gGkYeu2fAfADwY31mkAooDxD; SERVERID=da7472215188c88fe194f138f1242089|1738557149|1738556339; SERVERCORSID=da7472215188c88fe194f138f1242089|1738557149|1738556339; isg=BBcXHLltPM7zv7hi-FnT0HW6pothXOu-LIccEmlG4eZGmDrabS7mDq_--ziGPsM2; tfstk=gxYniE986HSQfEpYpd7Icypow5otjW_5cLUReaBrbOW6JLnCehbygKjRyBdPr4XN8gtde9BlrQ9m6x3xkBOCPgkxHqIXCrTVlurzY8QNb_blTz_06LRCPaktd3lv5B9qU3M64alG7_fz8aWFTPlGZsXPz9SzQl5VQT7yU9SaQ617YJzUzRlGNOWPzaJP7jQ8r9CV1FkgVOPK4CrD_6jh3BWH9KLadGrBiO4zzFjfxtuAIzzyS6Ot3kbuo0B2c9IACduT-aANZKfDKRkGzCYBoG8ECzvDIn7G1hMuqtxy9ntPjXueswXhmFI0Zk7H4pTlAHVSGC7eCn6fYcM1seLAqtsgQvR9s9SDqpH_z9KD_djvWRUA7I-GSgozbo5IVz1ZwFr7VM51stK4FEPS3FZLvfcg0MIF16r-sfq7VM51sthisoJlY11U2', // 直接填入 cookie | ||||
|     }, | ||||
|     body: JSON.stringify({ | ||||
|       stream: false, | ||||
|       chat_type: "t2t", | ||||
|       model: 'qwen2.5-vl-72b-instruct', | ||||
|       messages: [ | ||||
|         { | ||||
| @@ -245,9 +249,14 @@ async function recognizeImage(token, imageId) { | ||||
|                     '2. 忽略干扰线和噪点\n' + | ||||
|                     '3. 注意区分相似字符,如0和O、1和l、2和Z等\n' + | ||||
|                     '4. 验证码通常为4-6位字母数字组合\n\n' + | ||||
|                     '不要输出任何额外的解释或说明' | ||||
|                     '不要输出任何额外的解释或说明', | ||||
|               chat_type: "t2t" | ||||
|             }, | ||||
|             {  | ||||
|               type: 'image',  | ||||
|               image: imageId, | ||||
|               chat_type: "t2t" | ||||
|             }, | ||||
|             { type: 'image', image: imageId }, | ||||
|           ], | ||||
|         }, | ||||
|       ], | ||||
| @@ -1070,13 +1079,13 @@ function getHTML() { | ||||
|  | ||||
| '    .github-link {', | ||||
| '      position: fixed;', | ||||
|     '      right: 150px;', // 放在 token 设置按钮左边 | ||||
| '      right: 150px;', // 放在 token 设置按钮左边', | ||||
| '      top: 20px;', | ||||
|     '      background: #333;', // GitHub 的深色背景 | ||||
| '      background: #333;', // GitHub 的深色背景', | ||||
| '      color: white;', | ||||
| '      border: none;', | ||||
| '      padding: 10px;', | ||||
|     '      border-radius: 50%;', // 圆形按钮 | ||||
| '      border-radius: 50%;', // 圆形按钮', | ||||
| '      cursor: pointer;', | ||||
| '      z-index: 1001;', | ||||
| '      width: 40px;', | ||||
| @@ -1088,12 +1097,52 @@ function getHTML() { | ||||
| '    }', | ||||
|  | ||||
| '    .github-link:hover {', | ||||
|     '      background: #24292e;', // GitHub hover 颜色 | ||||
| '      background: #24292e;', // GitHub hover 颜色', | ||||
| '    }', | ||||
|  | ||||
| '    .github-icon {', | ||||
| '      width: 24px;', | ||||
| '      height: 24px;', | ||||
| '    }', | ||||
|  | ||||
| '    .cookie-input-container {', | ||||
| '      margin-bottom: 15px;', | ||||
| '    }', | ||||
|  | ||||
| '    #cookieInput {', | ||||
| '      width: 100%;', | ||||
| '      padding: 12px;', | ||||
| '      border: 2px solid #e9ecef;', | ||||
| '      border-radius: 8px;', | ||||
| '      font-size: 0.95rem;', | ||||
| '      resize: vertical;', | ||||
| '      min-height: 120px;', | ||||
| '      font-family: monospace;', | ||||
| '      line-height: 1.4;', | ||||
| '    }', | ||||
|  | ||||
| '    #cookieInput:focus {', | ||||
| '      outline: none;', | ||||
| '      border-color: #3498db;', | ||||
| '    }', | ||||
|  | ||||
| '    .cookie-info {', | ||||
| '      background: #f8f9fa;', | ||||
| '      padding: 12px;', | ||||
| '      border-radius: 8px;', | ||||
| '      margin-bottom: 15px;', | ||||
| '    }', | ||||
|  | ||||
| '    .cookie-info p {', | ||||
| '      margin: 0;', | ||||
| '      color: #2c3e50;', | ||||
| '      font-size: 0.9rem;', | ||||
| '    }', | ||||
|  | ||||
| '    #currentTokenDisplay {', | ||||
| '      color: #3498db;', | ||||
| '      font-family: monospace;', | ||||
| '      word-break: break-all;', | ||||
| '    }', | ||||
|     '</style>', | ||||
|     '</head>', | ||||
| @@ -1103,18 +1152,24 @@ function getHTML() { | ||||
|     '    <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>', | ||||
|     '  </svg>', | ||||
|     '</a>', | ||||
|     '<button class="sidebar-toggle" id="sidebarToggle">⚙️ Token设置</button>', | ||||
|     '<button class="sidebar-toggle" id="sidebarToggle">⚙️ Cookie设置</button>', | ||||
|     '<div class="sidebar" id="sidebar">', | ||||
|     '<div class="sidebar-header">', | ||||
|     '<h2>Token 管理</h2>', | ||||
|     '<h2>Cookie管理</h2>', | ||||
|     '<button class="close-sidebar" id="closeSidebar">×</button>', | ||||
|     '</div>', | ||||
|     '<div class="token-section">', | ||||
|     '<label for="tokenInput">输入Token</label>', | ||||
|     '<textarea id="tokenInput" placeholder="输入Token,多个Token请用英文逗号分隔" rows="4"></textarea>', | ||||
|     '<button class="save-btn" id="saveTokens">保存 Token</button>', | ||||
|     '<label for="cookieInput">输入Cookie</label>', | ||||
|     '<div class="cookie-input-container">', | ||||
|     '<textarea id="cookieInput" placeholder="请输入完整的cookie字符串..." rows="8"></textarea>', | ||||
|     '</div>', | ||||
|     '<div class="token-list" id="tokenList"></div>', | ||||
|     '<div class="cookie-info">', | ||||
|     '<p>当前Token: <span id="currentTokenDisplay">未设置</span></p>', | ||||
|     '</div>', | ||||
|     '<button class="save-btn" id="saveTokens">保存设置</button>', | ||||
|     '</div>', | ||||
|     // 添加 tokenList 容器 | ||||
|     '<div class="token-list" id="tokenList"></div>', // 添加这一行 | ||||
|     '</div>', | ||||
|  | ||||
|     '<div class="container">', | ||||
| @@ -1218,7 +1273,7 @@ function getHTML() { | ||||
|     '        const timeStr = timestamp.toLocaleString(\'zh-CN\', {', | ||||
|     '          year: \'numeric\',', | ||||
|     '          month: \'2-digit\',', | ||||
|     '          day: \'2-digit\',', | ||||
|     '          day: \'2-digit\',',  // Add comma here | ||||
|     '          hour: \'2-digit\',', | ||||
|     '          minute: \'2-digit\'', | ||||
|     '        });', | ||||
| @@ -1296,6 +1351,11 @@ function getHTML() { | ||||
|  | ||||
|     '    // 修改 updateTokenList 函数', | ||||
|     '    function updateTokenList() {', | ||||
|     '      const tokenList = document.getElementById(\'tokenList\');', | ||||
|     '      if (!tokenList) {', | ||||
|     '        console.error(\'找不到tokenList元素\');', | ||||
|     '        return;', | ||||
|     '      }', | ||||
|     '      tokenList.innerHTML = "";', | ||||
|     '      tokens.forEach(function(token, index) {', | ||||
|     '        var truncatedToken = token.slice(0, 10) + "..." + token.slice(-10);', | ||||
| @@ -1310,21 +1370,40 @@ function getHTML() { | ||||
|     '        });', | ||||
|     '        tokenList.appendChild(div);', | ||||
|     '      });',   | ||||
|     '      const tokenInput = document.getElementById(\'tokenInput\');', | ||||
|     '      if (tokenInput) {', | ||||
|     '        tokenInput.value = tokens.join(",");', | ||||
|     '      }', | ||||
|     '    }', | ||||
|  | ||||
|     '    // 保存tokens', | ||||
|     '    saveTokensBtn.addEventListener(\'click\', () => {', | ||||
|     '      const inputTokens = tokenInput.value.split(\',\').map(t => t.trim()).filter(t => t);', | ||||
|     '      if (inputTokens.length > 0) {', | ||||
|     '        tokens = inputTokens;', | ||||
|     '        localStorage.setItem(\'imageRecognitionTokens\', tokens.join(\',\'));', | ||||
|     '        updateTokenList();', | ||||
|     '        currentToken = tokens[0];', | ||||
|     '        alert(\'Tokens已保存\');', | ||||
|     '      } else {', | ||||
|     '        alert(\'请至少输入一个有效的Token\');', | ||||
|     '      const cookieValue = document.getElementById(\'cookieInput\').value.trim();', | ||||
|     '      if (!cookieValue) {', | ||||
|     '        alert(\'请输入Cookie\');', | ||||
|     '        return;', | ||||
|     '      }', | ||||
|     '      ', | ||||
|     '      // 从cookie中提取token', | ||||
|     '      const tokenMatch = cookieValue.match(/token=([^;]+)/);', | ||||
|     '      if (!tokenMatch) {', | ||||
|     '        alert(\'无法从Cookie中提取token,请确保Cookie中包含token字段\');', | ||||
|     '        return;', | ||||
|     '      }', | ||||
|     '      ', | ||||
|     '      const token = tokenMatch[1];', | ||||
|     '      tokens = [token];', | ||||
|     '      currentToken = token;', | ||||
|     '      ', | ||||
|     '      // 保存cookie和token', | ||||
|     '      localStorage.setItem(\'imageRecognitionCookie\', cookieValue);', | ||||
|     '      localStorage.setItem(\'imageRecognitionTokens\', token);', | ||||
|     '      ', | ||||
|     '      // 更新显示', | ||||
|     '      document.getElementById(\'currentTokenDisplay\').textContent = ', | ||||
|     '        token.slice(0, 10) + "..." + token.slice(-10);', | ||||
|     '      ', | ||||
|     '      alert(\'设置已保存\');', | ||||
|     '    });', | ||||
|  | ||||
|     '    // 侧边栏开关', | ||||
| @@ -1340,6 +1419,7 @@ function getHTML() { | ||||
|     '        return;', | ||||
|     '      }', | ||||
|  | ||||
|     '      const savedCookie = localStorage.getItem(\'imageRecognitionCookie\');', | ||||
|     '      // 显示图片预览', | ||||
|     '      const reader = new FileReader();', | ||||
|     '      let imageData;', | ||||
| @@ -1363,6 +1443,7 @@ function getHTML() { | ||||
|     '          method: \'POST\',', | ||||
|     '          headers: {', | ||||
|     '            \'Authorization\': \'Bearer \' + currentToken,', | ||||
|     '            \'x-custom-cookie\': savedCookie || \'\', // 添加 cookie 到请求头', | ||||
|     '          },', | ||||
|     '          body: formData,', | ||||
|     '        });', | ||||
| @@ -1764,6 +1845,25 @@ function getHTML() { | ||||
|     '        timeout = setTimeout(later, wait);', | ||||
|     '      };', | ||||
|     '    }', | ||||
|  | ||||
|     '    // 加载保存的cookie', | ||||
|     '    function loadSettings() {', | ||||
|     '      const savedCookie = localStorage.getItem(\'imageRecognitionCookie\');', | ||||
|     '      if (savedCookie) {', | ||||
|     '        document.getElementById(\'cookieInput\').value = savedCookie;', | ||||
|     '        const tokenMatch = savedCookie.match(/token=([^;]+)/);', | ||||
|     '        if (tokenMatch) {', | ||||
|     '          const token = tokenMatch[1];', | ||||
|     '          tokens = [token];', | ||||
|     '          currentToken = token;', | ||||
|     '          document.getElementById(\'currentTokenDisplay\').textContent = ', | ||||
|     '            token.slice(0, 10) + "..." + token.slice(-10);', | ||||
|     '        }', | ||||
|     '      }', | ||||
|     '    }', | ||||
|  | ||||
|     '    // 初始化时调用loadSettings', | ||||
|     '    loadSettings();', | ||||
|     '</script>', | ||||
|     '</body>', | ||||
|     '</html>' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Cunninger
					Cunninger