Amm1rr / WebAI-to-API

Claude, Gemini to API : ) (Don't need API KEY)
MIT License
229 stars 41 forks source link

Claude does not work at all #14

Closed johnd0e closed 1 year ago

johnd0e commented 1 year ago
``` ←[31mERROR←[0m: Exception in ASGI application Traceback (most recent call last): File "D:\AI\WebAI-to-API\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 408, in run_asgi result = await app( # type: ignore[func-returns-value] File "D:\AI\WebAI-to-API\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in __call__ return await self.app(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\fastapi\applications.py", line 289, in __call__ await super().__call__(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\applications.py", line 122, in __call__ await self.middleware_stack(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in __call__ raise exc File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in __call__ await self.app(scope, receive, _send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\middleware\cors.py", line 83, in __call__ await self.app(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__ raise exc File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__ await self.app(scope, receive, sender) File "D:\AI\WebAI-to-API\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 20, in __call__ raise e File "D:\AI\WebAI-to-API\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 17, in __call__ await self.app(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\routing.py", line 718, in __call__ await route.handle(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\routing.py", line 276, in handle await self.app(scope, receive, send) File "D:\AI\WebAI-to-API\venv\lib\site-packages\starlette\routing.py", line 66, in app response = await func(request) File "D:\AI\WebAI-to-API\venv\lib\site-packages\fastapi\routing.py", line 273, in app raw_response = await run_endpoint_function( File "D:\AI\WebAI-to-API\venv\lib\site-packages\fastapi\routing.py", line 190, in run_endpoint_function return await dependant.call(**values) File "D:\AI\WebAI-to-API\src\main.py", line 552, in ask_claude claude = Client(cookie) File "D:\AI\WebAI-to-API\src\claude.py", line 14, in __init__ self.organization_id = self.get_organization_id() File "D:\AI\WebAI-to-API\src\claude.py", line 34, in get_organization_id uuid = res[0]['uuid'] KeyError: 0 ```

No surprise: res value is {'error': {'type': 'permission_error', 'message': 'Invalid authorization'}} But I have doublechecked my token value in Config.conf, and it is correct.

johnd0e commented 1 year ago

Fix:

diff --git a/src/claude.py b/src/claude.py
index d433061..fadc5ce 100644
--- a/src/claude.py
+++ b/src/claude.py
@@ -26,7 +26,7 @@ class Client:
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
         'Connection': 'keep-alive',
-        'Cookie': f'{self.cookie}'
+        'Cookie': f'sessionKey={self.cookie}'
     }

     response = requests.get(url, headers=headers,impersonate="chrome110")
@@ -62,7 +62,7 @@ class Client:
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
         'Connection': 'keep-alive',
-        'Cookie': f'{self.cookie}'
+        'Cookie': f'sessionKey={self.cookie}'
     }

     response = requests.get(url, headers=headers,impersonate="chrome110")
@@ -113,7 +113,7 @@ class Client:
       'Origin': 'https://claude.ai',
       'DNT': '1',
       'Connection': 'keep-alive',
-      'Cookie': f'{self.cookie}',
+      'Cookie': f'sessionKey={self.cookie}',
       'Sec-Fetch-Dest': 'empty',
       'Sec-Fetch-Mode': 'cors',
       'Sec-Fetch-Site': 'same-origin',
@@ -181,7 +181,7 @@ class Client:
       'Origin': 'https://claude.ai',
       'DNT': '1',
       'Connection': 'keep-alive',
-      'Cookie': f'{self.cookie}',
+      'Cookie': f'sessionKey={self.cookie}',
       'Sec-Fetch-Dest': 'empty',
       'Sec-Fetch-Mode': 'cors',
       'Sec-Fetch-Site': 'same-origin',
@@ -254,7 +254,7 @@ class Client:
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
         'Connection': 'keep-alive',
-        'Cookie': f'{self.cookie}',
+        'Cookie': f'sessionKey={self.cookie}',
         'TE': 'trailers'
     }

@@ -280,7 +280,7 @@ class Client:
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
         'Connection': 'keep-alive',
-        'Cookie': f'{self.cookie}'
+        'Cookie': f'sessionKey={self.cookie}'
     }

     response = requests.get( url, headers=headers,impersonate="chrome110")
@@ -309,7 +309,7 @@ class Client:
         'Origin': 'https://claude.ai',
         'DNT': '1',
         'Connection': 'keep-alive',
-        'Cookie': self.cookie,
+        'Cookie': 'sessionKey=' + self.cookie,
         'Sec-Fetch-Dest': 'empty',
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
@@ -356,7 +356,7 @@ class Client:
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
         'Connection': 'keep-alive',
-        'Cookie': f'{self.cookie}',
+        'Cookie': f'sessionKey={self.cookie}',
         'TE': 'trailers'
     }

@@ -396,7 +396,7 @@ class Client:
         'Sec-Fetch-Mode': 'cors',
         'Sec-Fetch-Site': 'same-origin',
         'Connection': 'keep-alive',
-        'Cookie': f'{self.cookie}',
+        'Cookie': f'sessionKey={self.cookie}',
         'TE': 'trailers'
     }
Amm1rr commented 1 year ago

Nice, I actually received an issue #13 about the Claude session. Some users don't have 'sessionKey=' in the name of that and the cookie is totally different. So I just removed a check like this. For now, I will try to push your changes now but probably we get a new issue.

Let's see what is going to happen.

Update: The "fix_sessionKey" function has been added.