-
Notifications
You must be signed in to change notification settings - Fork 98
Description
['XeD8KYzhjUNc0Ng', '9Q2u13Gn4hQvZ24', 'uHN3c16e3YozUqi', 'UvNkSlZbMJEoJLx', 'weyxDAISFEtRC50', 'ICcFgDmL9BKSsUe', 'spEtu6Xq8HKZlEM', 'yhY7cPnPuLIPHIm', 'JvyNtE9OWVvD4fz', 'i6Faz0SqHRmjwpI', 'kgToAKeahTFOWch', 'rP3sGnKNoK0Pgsb', 'rR4b6F3Lc2dWSfi', 'LabdtMysKLWEzOc', 'i8kXTk4vOlfsmIz', 'm9e5Xqyn0uOjd3v', '1nHVpKldoTPKrIF', 'C1DQunBJxeNwlP5', 'cia20faguU69YS7', '1b3axiTCiz44eZC', 'fOL4rQC11UxNsem', 'acTw8y7mEspzTTB', '21FKnUhqycZ5zeM', 'Wblqkrk2VRHYthT', '1GFHgrEbpCESj5M', '2CHlzJYQHMFgKOE', 'dqd8SL9qR8j5o08', '05pnBnU9o3zOgUq', 'Yo0lJjWkRulpgGd', 'f3k3s7t4C7wWABL', '8imFbBNgbWL1KOK', 'z6SYTz6ePfgiSzW', 'wC1OGWTsWMK2Kr8', 'YjDb0ID3aIJO6WW', 'Ee0tX03wKjKuD0l', 'ffntrWVbrs6JWzR', 'c6o8ohQ0e3DEqpi', 'jtGwadK1vFf2SNh', 'Hor5KhWGCXX8rZG', 'WlTmdpbLjJ9MO5A', 'IYkg26nUdSj7XsN', 'T9OHMZKP8MGmt29', 'cwTlhQVgoTbccyt', '28dpqqagN2yl6zx', 'WjHaKq43ASEoB0z', 'm5JydiJhTBKkpTO', 'Icok9fIrmJLfsJI', 'jADE8C9zAddKYBb', 'RCaqf0Ol8uQ2foq', '2Lxn663P9a7FPWy', 'h638lmYFLbm6y3B', '1T9fb7tj7JFnKdN', 'PN0heC9Lst6b02B', '4ncJVmHt1megvcF', 'TtrVrCSkyf4z9G1', 'O0At38f0B5D0NH6', 'RrHqgiqXUcafEkz', 'wT63dKV2Xo0oWOg', '8scD49qjKYluuaz', 'cGa3ShXR8GEyNo0', 'VGPmBd5aZmLOVxj', 'o8DK1nEebkarh8R', 'rrCcjpc3WspONKl', 'LIcgNHM1a0AG968', 'DOCYRVDZkFFNQwf', 'kWNq3AQ4PikI8HT', '81WnHYeEz3eYUxz', '29ILTduShCbmX1v', 'dhbJ3CzDkU1cQej', 'jkmWymg9OaRAbnK', 'skh5K4KFWh0YJy8', 'hl7Aw3UC98o2DbN', 'tCABpZry2j04ctj', 'noG7ZfilLcD73xs', 'HiipRv3RKzaGVQV', '4ecL7rn7oOddAjt', 'Ufj93pK0temFa6W', 'qtnQEslSG32ZUjI', 'LkEUdxOF4o7YEdd', 'NGWxiXBZzJVX9hk', 'QMf5bvlA6nCd7hM', 'xSTvWOT715vIfXa', 'wPpXO0BNaemXoE5', 'SCyckIrIq9N6qAq', 'BNjmNv32egrPwGo', 'H1CVAkTmHNuQVgF', 'SspoKM7NuaHbNLq', 'sTxrKE6luHYrHX5', 'N01V0Xuh3VxdTfl', 'NPwSdE0ZYCuAGpz', 'tILWMchA2QEaSnR', 'D7s2El6U51oCRIg', 'eIdLKBQCiXs72TE', 'sty1yhvCAsoKboF', 'fAHj9MKkX6efoqZ', 'layGhSJMXQDb8S4', 'H4ii9lXspLwVwfA', 'DYXErxhZwMg9owu', '0n5BUwhhq33mh5o', 'eapY8CqB70KMgVX', 'wCb6VrdROWzT4v9', 'ivrn3vxxbpaSDhv', 'XmK8QP0XXSN9hjC', 'YiPwiK3qMOZkPkh', 'o7EX7ZEooAy02I1', 'IaIfztiTimNCg0x', 'G4WXy6fLzZHPbTZ', 'FGMLDebnuoIxZ
修改方式:
async def make_request(self, method: str, url: str, headers: dict = None, json_data: dict = None, max_retries: int = 3):
if not self.session:
await self.create_session(self.proxy, self.user_agent)
json_data['referral_code'] = json_data['referral_code'][0]
retry_count = 0
while retry_count < max_retries:
try:
response = await self.session.request(
method=method,
url=url,
headers=headers,
json=json_data,
timeout=30,
proxy=self.proxy,
impersonate="chrome110"
)
if response.status_code == 429:
# Обработка ограничения частоты запросов
retry_after = response.headers.get("Retry-After")
retry_after = int(retry_after) if retry_after and retry_after.isdigit() else 5 # 5 секунд по умолчанию
logger.warning(f"Rate limited. Retrying after {retry_after} seconds...")
await asyncio.sleep(retry_after)
retry_count += 1
continue
if response.status_code in [403, 400]:
raise CloudflareException('Cloudflare protection detected')
try:
response_json = response.json()
except json.JSONDecodeError:
continue
# logger.error(f"Failed to parse JSON response")
if not response.ok:
error_msg = response_json.get('error', 'Unknown error')
logger.error(f"Request failed with status {response.status_code}: {error_msg}")
raise Exception(f"Request failed: {error_msg}")
return response_json
except CloudflareException as e:
# logger.error(f"Cloudflare error: {e}")
raise
except Exception as e:
retry_count += 1
if retry_count >= max_retries:
logger.error(f"Max retries reached. Last error: {e}")
raise
logger.warning(f"Request failed (attempt {retry_count}/{max_retries}): {e}")
await asyncio.sleep(2) # Wait before retrying
The current configuration will cause registration to fail. You need to use the method #json_data['referral_code'] = json_data['referral_code'][0]