From f05e49d08ade0d49306ef4acecd710f7ad3fd26e Mon Sep 17 00:00:00 2001 From: Hansimov <591172499@qq.com> Date: Sun, 10 Dec 2023 23:55:00 +0800 Subject: [PATCH] :zap: [Enhance] Use requests to replace httpx for cleaner headers --- conversations/conversation_creator.py | 24 ++++++++----------- ...conversation_create_headers_constructor.py | 4 +++- requirements.txt | 1 + utils/enver.py | 4 ++++ 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/conversations/conversation_creator.py b/conversations/conversation_creator.py index e392b34..fba9267 100644 --- a/conversations/conversation_creator.py +++ b/conversations/conversation_creator.py @@ -1,5 +1,4 @@ -import httpx -import json +import requests from pprint import pprint from utils.enver import enver from networks import ConversationCreateHeadersConstructor @@ -12,9 +11,7 @@ def __init__(self, cookies: dict = {}): self.cookies = cookies def construct_cookies(self): - self.httpx_cookies = httpx.Cookies() - for key, val in self.cookies.items(): - self.httpx_cookies.set(key, val) + pass def construct_headers(self): # New Bing 封锁原理探讨 #78 @@ -25,28 +22,27 @@ def create(self): self.construct_cookies() self.construct_headers() enver.set_envs(proxies=True) - self.response = httpx.get( + self.response = requests.get( self.conversation_create_url, headers=self.request_headers, - proxies=enver.proxy, - cookies=self.httpx_cookies, + proxies=enver.requests_proxies, ) try: - self.response_content = json.loads(self.response.content.decode("utf-8")) + self.response_data = self.response.json() except: - print(self.response.content) + print(self.response.text) raise Exception( f"x Failed to create conversation: {self.response.status_code}" ) - self.response_headers = dict(self.response.headers) - pprint(self.response_content) + self.response_headers = self.response.headers + pprint(self.response_data) # These info would be used in ConversationConnector self.sec_access_token = self.response_headers[ "x-sydney-encryptedconversationsignature" ] - self.client_id = self.response_content["clientId"] - self.conversation_id = self.response_content["conversationId"] + self.client_id = self.response_data["clientId"] + self.conversation_id = self.response_data["conversationId"] if __name__ == "__main__": diff --git a/networks/conversation_create_headers_constructor.py b/networks/conversation_create_headers_constructor.py index b89758b..761ab3d 100644 --- a/networks/conversation_create_headers_constructor.py +++ b/networks/conversation_create_headers_constructor.py @@ -4,5 +4,7 @@ def __init__(self): def construct(self): self.request_headers = { - "X-Forwarded-For": "65.49.22.66", + "Referer": "https://www.bing.com/search?q=Bing+AI&showconv=1&setlang=en&cc=us", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", + "X-Ms-Useragent": "azsdk-js-api-client-factory/1.0.0-beta.1 core-rest-pipeline/1.12.0 OS/Windows", } diff --git a/requirements.txt b/requirements.txt index 7e920b1..c0e0fd8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ fastapi httpx openai pydantic +requests sse_starlette termcolor uvicorn diff --git a/utils/enver.py b/utils/enver.py index 7150918..6d8fc49 100644 --- a/utils/enver.py +++ b/utils/enver.py @@ -50,6 +50,10 @@ def set_envs(self, secrets=True, proxies=None, store_envs=True): or self.envs.get("https_proxy") or None ) + self.requests_proxies = { + "http": self.proxy, + "https": self.proxy, + } enver = OSEnver()