PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : python hcaptcher bypassing



pat92aut
20.10.2021, 14:30
Hallo,

ich bin gerade dabei mir ein wenig Python anzueignen und versuche nun einen "Upvote bot" zuerstellen, dafür muss ich hcaptcha umgehen, dafür nutze ich 2captcha, das Problem nun ist ich muss den Code den ich via 2captcha erhalte über eine form posten, leider funktioniert das bei mir nicht evtl. kann mir hier jemand helfen.
Es handelt sich um coinhunters.cc


from os.path import dirname
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
from twocaptcha import TwoCaptcha
import random
import time
import requests
import re
import string
import secrets
import sys
import os


driver = webdriver.Chrome() # USES CHROMEDRIVERMANAGER TO AUTO UPDATE CHROMEDRIVER
from twocaptcha import TwoCaptcha

x = 1

while x == 1:
solver = TwoCaptcha('6443ea2ca08122df83388f1c16004ebf')

apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
siteKey = '78f9a81f-f8bf-493e-9bd5-a496020674d5'
pageUrl = 'https://coinhunters.cc/tokens/FlokiKiller'
driver.get("https://coinhunters.cc/tokens/FlokiKiller")
time.sleep(5)
driver.find_element_by_xpath ("/html/body/main/div/section[2]/div/div/div[2]/div/span[1]/i").click() #hier wird der popup geschlossen
time.sleep(2)
driver.find_element_by_xpath ("/html/body/main/div/section[3]/div/div/div[3]/div[2]/div/div[4]/form/div/div[5]/input").click() #click auf vote
time.sleep(2)
requestUrl = 'https://2captcha.com/in.php?key='+apiKey+'&method=hcaptcha&sitekey='+siteKey+'&pageurl='+pageUrl #anf
print('Requesting 2captcha API...')
resp = requests.get(requestUrl)
captchaId = resp.text[3:]
returnUrl = 'https://2captcha.com/res.php?key='+apiKey+'&action=get&id='+captchaId
print(returnUrl)
resp = requests.get(returnUrl)
time.sleep(20)
if resp.text == 'CAPCHA_NOT_READY':
while resp.text == 'CAPCHA_NOT_READY':
print('Captcha is not ready, requesting again in 5 seconds...')
time.sleep(5)
resp = requests.get(returnUrl)
ansToken = resp.text[3:]
resp = requests.get(requestUrl)
print('Answer token recieved:')
captchaInput = driver.find_element_by_name('g-recaptcha-response')
driver.execute_script("arguments[0].setAttribute('style','visibility:visible;');", captchaInput)
captchaInput.send_keys(ansToken)
time.sleep(30)
driver.refresh()


evtl. kann mir hier ja jemand weiterhelfen.

Dailox
23.10.2021, 14:09
Also kenne 2Captcha nicht, aber du scheinst TwoCaptcha einzubinden aber nicht zu benutzen. Btw, ist das dein API Key? Zensier den lieber.

Die API für hCaptcha scheint folgendermaßen zu funktionieren:



result = solver.hcaptcha(sitekey='10000000-ffff-ffff-ffff-000000000001',
url='https://www.site.com/page/',
param1=..., ...)


Den sitekey kann man bei ReCaptcha so kriegen:



# <input type="hidden" id="recaptcha-token" value="bhasdhjasdjh">

sitekey = driver.find_element_by_id("recaptcha-token").get_attribute("value")


Wird wohl bei hCaptcha ähnlich bzw genauso funktionieren.

Wie du es machst funktioniert wohl auch, aber ich denke so ist es schon besser.

Zu deiner Frage:

Die API gibt anscheinend die Bilder zurück die du klicken musst, bspw:


OK|click:3/8/9


Also klickst du das Captcha an und holst dir alle Bilder:


elements = driver.find_elements_by_class_name("task-image") #oder so ähnlich
elements[2].click()
elements[7].click()
#usw..


Und dann kann man das submitten mit:


driver.find_elements_by_class_name("button-submit")[0].click()



Ich hab das alles nicht ausprobiert und auch noch nie was mit 2Captcha, aber ich denke so funktioniert das.

https://pypi.org/project/2captcha-python/#hcaptcha
https://2captcha.com/2captcha-api