There was a similar question on stack overflow in the 21st year
Submitting hcaptcha captcha token to Discord to create an account using selenium
but, firstly, they did not give a clear answer, and secondly, everything has changed in 4 years, and the scripts that were offered there no longer работа. Какой смысл. Я пытаюсь создать бота в Discord автоматически, используя Python и библиотеку Selenium, но для этого, после входа в имя бота, вам нужно пройти через капчу. Чтобы обойти это, я использую услугу 2Captcha, которая работает в соответствии с принципом: я отправляю SiteKey для раздора, он посылает мне решение в форме строки, которую необходимо вставить в поле ответа (H-CAPTCHA-ответ). Проблема в том, что, в отличие от других сайтов, Discord проверяет правильность самой завершенной капчи, без кнопок «отправить», «проверки» и т. Д. Я озадачивал, как обойти это очень долго. Нейронные сети ответили, что в Discord был скрытый сценарий, чтобы проверить CAPTCHA, и вам необходимо активировать триггер, чтобы его учитывать. Они не нашли сам триггер, даже после полного удаления HTML -кода сайта. Я также пытался найти это сам, но я не мог. Пожалуйста, помогите, именно из -за этой проблемы я отказался от своего проекта в предыдущем году, решил вернуться сейчас с обновленной энергией, и все еще не смог его понять. Я приложу код, который уже существует ниже. Сразу после комментария # вставка в код и активация CAPTCHA CHECK должен быть код, который я не мог бы написать
async def _process_log_entry(entry: dict):
message = entry.get("message", "")
if 'captcha' not in message or 'sitekey' not in message:
return None
try:
data = json.loads(message)
post_data = (data.get("message", {})
.get("params", {})
.get("request", {})
.get("postData"))
if not post_data:
return None
events = json.loads(post_data).get("events", [])
if events:
return events[0].get("properties", {}).get("sitekey")
except (json.JSONDecodeError, AttributeError, TypeError, KeyError) as e:
return None
return None
async def get_sitekey(driver: webdriver.Chrome, timeout=5):
for attempt in range(timeout):
try:
log_entries = driver.get_log("performance")
for entry in log_entries:
if sitekey := await _process_log_entry(entry):
return sitekey
await asyncio.sleep(1)
return None
except selenium.common.exceptions.InvalidArgumentException as e:
await asyncio.sleep(1)
return None
return None
# FIXME
async def bypass_captcha(driver, sitekey):
loop = asyncio.get_running_loop()
solve = TwoCaptcha(tk.captcha_api_key)
with concurrent.futures.ThreadPoolExecutor() as pool:
for _ in range(3):
try:
result = await loop.run_in_executor(pool,
lambda: solve.hcaptcha(sitekey=sitekey, url=driver.current_url))
except (ApiException, twocaptcha.api.ApiException, twocaptcha.solver.ApiException,
twocaptcha.solver.TimeoutException) as e:
print(e)
continue
break
else:
raise ApiException("All attempts to solve the captcha were unsuccessful")
hcaptcha_solution = result['code']
# Inserting into the code and activating the captcha check
return solve
< /code>
плюс этот кусок кода (при необходимости): < /p>
chrome_options = webdriver.ChromeOptions()
chrome_options.set_capability(
"goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"}
)
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://discord.com/developers/applications")
< /code>
Заранее спасибо за вашу помощь < /p>
p.s. Я предполагаю, что вам может понадобиться JS для решения, поэтому я добавлю его в теги.
Подробнее здесь: https://stackoverflow.com/questions/796 ... g-selenium
Отправка токена HCAptcha на раздор с использованием селена ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение