Spaces:
Paused
Paused
:gem: [Feature] Request cookies to bypass challenge
Browse files
conversations/conversation_creator.py
CHANGED
@@ -1,17 +1,22 @@
|
|
1 |
import requests
|
2 |
from pprint import pprint
|
|
|
3 |
from utils.enver import enver
|
4 |
from networks import ConversationCreateHeadersConstructor
|
|
|
5 |
|
6 |
|
7 |
class ConversationCreator:
|
8 |
conversation_create_url = "https://www.bing.com/turing/conversation/create"
|
9 |
|
10 |
def __init__(self, cookies: dict = {}):
|
11 |
-
self.
|
12 |
|
13 |
def construct_cookies(self):
|
14 |
-
|
|
|
|
|
|
|
15 |
|
16 |
def construct_headers(self):
|
17 |
# New Bing 封锁原理探讨 #78
|
@@ -26,6 +31,7 @@ class ConversationCreator:
|
|
26 |
self.conversation_create_url,
|
27 |
headers=self.request_headers,
|
28 |
proxies=enver.requests_proxies,
|
|
|
29 |
)
|
30 |
try:
|
31 |
self.response_data = self.response.json()
|
|
|
1 |
import requests
|
2 |
from pprint import pprint
|
3 |
+
from utils.logger import logger
|
4 |
from utils.enver import enver
|
5 |
from networks import ConversationCreateHeadersConstructor
|
6 |
+
from networks import CookiesConstructor
|
7 |
|
8 |
|
9 |
class ConversationCreator:
|
10 |
conversation_create_url = "https://www.bing.com/turing/conversation/create"
|
11 |
|
12 |
def __init__(self, cookies: dict = {}):
|
13 |
+
self.request_cookies = cookies
|
14 |
|
15 |
def construct_cookies(self):
|
16 |
+
cookies_constructor = CookiesConstructor()
|
17 |
+
if not self.request_cookies:
|
18 |
+
cookies_constructor.construct()
|
19 |
+
self.request_cookies = cookies_constructor.cookies
|
20 |
|
21 |
def construct_headers(self):
|
22 |
# New Bing 封锁原理探讨 #78
|
|
|
31 |
self.conversation_create_url,
|
32 |
headers=self.request_headers,
|
33 |
proxies=enver.requests_proxies,
|
34 |
+
cookies=self.request_cookies,
|
35 |
)
|
36 |
try:
|
37 |
self.response_data = self.response.json()
|
networks/__init__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
from .chathub_request_payload_constructor import ChathubRequestPayloadConstructor
|
2 |
from .cookies_constructor import CookiesConstructor
|
|
|
3 |
from .conversation_request_headers_constructor import (
|
4 |
ConversationRequestHeadersConstructor,
|
5 |
)
|
|
|
|
|
1 |
from .cookies_constructor import CookiesConstructor
|
2 |
+
from .chathub_request_payload_constructor import ChathubRequestPayloadConstructor
|
3 |
from .conversation_request_headers_constructor import (
|
4 |
ConversationRequestHeadersConstructor,
|
5 |
)
|
networks/cookies_constructor.py
CHANGED
@@ -1,8 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
class CookiesConstructor:
|
2 |
-
|
3 |
-
self.cookies_list = [] # Dumped from Cookie-Editor extension in Browser
|
4 |
|
5 |
-
def
|
6 |
self.cookies = {}
|
7 |
-
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import requests
|
3 |
+
from datetime import datetime
|
4 |
+
from pathlib import Path
|
5 |
+
|
6 |
+
from utils.logger import logger
|
7 |
+
|
8 |
+
|
9 |
class CookiesConstructor:
|
10 |
+
bypass_url = "https://zklcdc-go-bingai-pass.hf.space"
|
|
|
11 |
|
12 |
+
def __init__(self):
|
13 |
self.cookies = {}
|
14 |
+
self.secrets_path = Path(__file__).parents[1] / "secrets.json"
|
15 |
+
self.created_datetime_format = "%Y-%m-%d %H:%M:%S"
|
16 |
+
|
17 |
+
def create_secrets_json(self):
|
18 |
+
if not self.secrets_path.exists():
|
19 |
+
self.secrets_path.parent.mkdir(parents=True, exist_ok=True)
|
20 |
+
with open(self.secrets_path, "w") as wf:
|
21 |
+
json.dump({}, wf)
|
22 |
+
|
23 |
+
def is_local_cookies_valid(self):
|
24 |
+
self.create_secrets_json()
|
25 |
+
if self.secrets_path.exists():
|
26 |
+
with open(self.secrets_path, "r") as f:
|
27 |
+
secrets = json.load(f)
|
28 |
+
if secrets.get("cookies"):
|
29 |
+
cookies = secrets["cookies"]
|
30 |
+
cookies_str = cookies.get("cookies_str")
|
31 |
+
cookies_created_datetime = datetime.strptime(
|
32 |
+
cookies.get("created_time"), self.created_datetime_format
|
33 |
+
)
|
34 |
+
datetime_now = datetime.now()
|
35 |
+
# if cookies created more than 12 hours, then it's invalid
|
36 |
+
self.cookies_created_seconds = (
|
37 |
+
datetime_now - cookies_created_datetime
|
38 |
+
).seconds
|
39 |
+
if self.cookies_created_seconds < 12 * 60 * 60:
|
40 |
+
self.cookies_str = cookies_str
|
41 |
+
self.cookies_created_datetime = cookies_created_datetime
|
42 |
+
return True
|
43 |
+
else:
|
44 |
+
return False
|
45 |
+
return False
|
46 |
+
|
47 |
+
def requests_cookies(self):
|
48 |
+
if self.is_local_cookies_valid():
|
49 |
+
logger.success(
|
50 |
+
f"Local Cookies Used: {self.cookies_created_datetime} "
|
51 |
+
f"({round(self.cookies_created_seconds/60/60,2)} hours ago)"
|
52 |
+
)
|
53 |
+
return
|
54 |
+
|
55 |
+
requests_body = {"cookies": ""}
|
56 |
+
try:
|
57 |
+
res = requests.post(
|
58 |
+
self.bypass_url,
|
59 |
+
json=requests_body,
|
60 |
+
timeout=15,
|
61 |
+
)
|
62 |
+
data = res.json()
|
63 |
+
cookies_str = data["result"]["cookies"]
|
64 |
+
cookies_snapshot = data["result"]["snapshot"]
|
65 |
+
logger.note(f"Get Cookies: {cookies_str}")
|
66 |
+
if cookies_str:
|
67 |
+
with open(self.secrets_path, "r") as rf:
|
68 |
+
secrets = json.load(rf)
|
69 |
+
secrets["cookies"] = {
|
70 |
+
"cookies_str": cookies_str,
|
71 |
+
"created_time": datetime.now().strftime(
|
72 |
+
self.created_datetime_format
|
73 |
+
),
|
74 |
+
"snapshot": self.bypass_url + cookies_snapshot,
|
75 |
+
}
|
76 |
+
with open(self.secrets_path, "w") as wf:
|
77 |
+
json.dump(secrets, wf)
|
78 |
+
except Exception as e:
|
79 |
+
cookies_str = ""
|
80 |
+
logger.err(e)
|
81 |
+
|
82 |
+
self.cookies_str = cookies_str
|
83 |
+
|
84 |
+
def cookies_str_to_dict(self):
|
85 |
+
cookie_items = self.cookies_str.split(";")
|
86 |
+
for cookie_item in cookie_items:
|
87 |
+
if not cookie_item:
|
88 |
+
continue
|
89 |
+
cookie_key, cookie_value = cookie_item.split("=", 1)
|
90 |
+
self.cookies[cookie_key.strip()] = cookie_value.strip()
|
91 |
+
logger.success(f"Cookies: {self.cookies}")
|
92 |
+
|
93 |
+
def construct(self):
|
94 |
+
self.requests_cookies()
|
95 |
+
self.cookies_str_to_dict()
|
96 |
+
|
97 |
+
|
98 |
+
if __name__ == "__main__":
|
99 |
+
cookies_constructor = CookiesConstructor()
|
100 |
+
cookies_constructor.construct()
|