Spaces:
Paused
Paused
| import httpx | |
| import json | |
| from pprint import pprint | |
| from utils.enver import enver | |
| from networks import ConversationCreateHeadersConstructor | |
| class ConversationCreator: | |
| conversation_create_url = "https://www.bing.com/turing/conversation/create" | |
| 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) | |
| def construct_headers(self): | |
| # New Bing 封锁原理探讨 #78 | |
| # https://github.com/weaigc/bingo/issues/78 | |
| self.request_headers = ConversationCreateHeadersConstructor().request_headers | |
| def create(self): | |
| self.construct_cookies() | |
| self.construct_headers() | |
| enver.set_envs(proxies=True) | |
| self.response = httpx.get( | |
| self.conversation_create_url, | |
| headers=self.request_headers, | |
| proxies=enver.proxy, | |
| cookies=self.httpx_cookies, | |
| ) | |
| try: | |
| self.response_content = json.loads(self.response.content.decode("utf-8")) | |
| except: | |
| print(self.response.content) | |
| raise Exception( | |
| f"x Failed to create conversation: {self.response.status_code}" | |
| ) | |
| self.response_headers = dict(self.response.headers) | |
| pprint(self.response_content) | |
| # 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"] | |
| if __name__ == "__main__": | |
| creator = ConversationCreator() | |
| creator.create() | |