From 0bf572706ace0781f61f89a72b4347bbc34eda0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=B5=E3=81=81?= Date: Sun, 29 Sep 2024 19:01:46 +0900 Subject: [PATCH] add useragent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ふぁ --- dist/compatible/openapi-3.0.yaml | 4 +-- .../compatible_discriminator/openapi-3.0.yaml | 4 +-- dist/docs/openapi-3.0.yaml | 4 +-- src/config/component/security_schemes.yaml | 4 +-- tools/build_config.py | 6 ++++- tools/hooks.py | 25 +++++++++++++++++++ 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/dist/compatible/openapi-3.0.yaml b/dist/compatible/openapi-3.0.yaml index 16cf4ee..a8e8c00 100644 --- a/dist/compatible/openapi-3.0.yaml +++ b/dist/compatible/openapi-3.0.yaml @@ -3238,8 +3238,8 @@ components: name: Sec-Fetch-Site type: apiKey UserAgent: - description: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/123.0.0.0 Safari/537.36 + description: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like + Gecko) Chrome/129.0.0.0 Safari/537.36 in: header name: user-agent type: apiKey diff --git a/dist/compatible_discriminator/openapi-3.0.yaml b/dist/compatible_discriminator/openapi-3.0.yaml index 45a4738..104c0de 100644 --- a/dist/compatible_discriminator/openapi-3.0.yaml +++ b/dist/compatible_discriminator/openapi-3.0.yaml @@ -3238,8 +3238,8 @@ components: name: Sec-Fetch-Site type: apiKey UserAgent: - description: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/123.0.0.0 Safari/537.36 + description: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like + Gecko) Chrome/129.0.0.0 Safari/537.36 in: header name: user-agent type: apiKey diff --git a/dist/docs/openapi-3.0.yaml b/dist/docs/openapi-3.0.yaml index 672b3aa..5239f71 100644 --- a/dist/docs/openapi-3.0.yaml +++ b/dist/docs/openapi-3.0.yaml @@ -3238,8 +3238,8 @@ components: name: Sec-Fetch-Site type: apiKey UserAgent: - description: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/123.0.0.0 Safari/537.36 + description: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like + Gecko) Chrome/129.0.0.0 Safari/537.36 in: header name: user-agent type: apiKey diff --git a/src/config/component/security_schemes.yaml b/src/config/component/security_schemes.yaml index 02c287c..c56938d 100644 --- a/src/config/component/security_schemes.yaml +++ b/src/config/component/security_schemes.yaml @@ -11,7 +11,7 @@ paths: required: true schema: type: string - default: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" + default: "Not Implemented" description: "UserAgent, some APIs may be rejected if changed." - name: authorization in: header @@ -135,7 +135,7 @@ paths: components: securitySchemes: UserAgent: - description: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" + description: "Not Implemented" in: header name: user-agent type: apiKey diff --git a/tools/build_config.py b/tools/build_config.py index 63135e6..1142062 100644 --- a/tools/build_config.py +++ b/tools/build_config.py @@ -6,6 +6,7 @@ from hooks import ( AddSecuritySchemesOnSecuritySchemes, RemoveErrorHandle, SetResponsesHeader, + SetUserAgentOnSecuritySchemes, ) @@ -40,7 +41,10 @@ class Config: additionalHooks.append(RemoveErrorHandle()) return { - "openapi": [AddSecuritySchemesOnSecuritySchemes()], + "openapi": [ + AddSecuritySchemesOnSecuritySchemes(), + SetUserAgentOnSecuritySchemes(), + ], "schemas": [], "other": [], "request": { diff --git a/tools/hooks.py b/tools/hooks.py index be632d3..40d0e47 100644 --- a/tools/hooks.py +++ b/tools/hooks.py @@ -1,5 +1,6 @@ import json +import urllib3 import yaml @@ -60,6 +61,13 @@ class HookBase: with open("src/config/placeholder.json", mode="r", encoding="utf-8") as f: return yaml.safe_load(f) + def load_user_agent(self) -> str: + user_agent = urllib3.PoolManager().request( + "GET", + "https://raw.githubusercontent.com/fa0311/latest-user-agent/main/output.json", + ) + return json.loads(user_agent.data)["chrome-fetch"] + # HookBase extends @@ -106,6 +114,14 @@ class AddSecuritySchemesOnSecuritySchemes(OpenapiHookBase): return value +class SetUserAgentOnSecuritySchemes(OpenapiHookBase): + def hook(self, value: dict): + value = super().hook(value) + param = value["components"]["securitySchemes"] + param["UserAgent"]["description"] = self.load_user_agent() + return value + + # SchemasHookBase extends @@ -151,6 +167,15 @@ class AddSecuritySchemesOnHeader(RequestHookBase): return path, value +class SetUserAgentOnHeader(RequestHookBase): + def hook(self, path: str, value: dict): + path, value = super().hook(path, value) + component = self.load_component("security_schemes") + param = component["paths"]["/parameters"]["get"]["parameters"] + value["parameters"].extend(param) + return path, value + + class ReplaceQueryIdPlaceholder(RequestHookBase): def hook(self, path: str, value: dict): path, value = super().hook(path, value)