Tak wychodzi bezmyślne łączenie kilku API , czyż nie mam racji?
Cytat:72-TAG POS=1 TYPE=INPUT ATTR=ID: CONTENT={{!EXTRACT}}
Czy w ogóle masz pojęcie o co chodzi w powyższej linii ? , domyślam się że nie .
Ta linia ma za zadanie wkleić "Last EXTRACT" w pole ID:recaptcha_response_field , w tym przypadku odpowiedź na Twoje zapytanie o captcha :
Właśnie w tej linii wyodrębniony jest text odpowiedzi (linia tak czy siak jest zła(wycięta z innego kodu(chyba z 9kw.eu) czy coś w tym stylu
))
Cytat:TAG POS=1 TYPE=* ATTR=TXT:* EXTRACT=TXT
Dostałeś Error , a w nim jego opis :
Cytat:RuntimeError: element INPUT specified by ID:recaptcha_response_field was not found, line 72 (Error code: -921)
Jasno wynika z tego ,że elemement ID jaki tu podałeś NIE został znaleziony , (zapewne linia wycięta z jakiegoś API , które obsługiwało "solvedMedia albo recaptcha v1 , bo tam jest przepisywanie textu z obrazka") , ale mniejsza z tym .
Ponadto w Twoim kodzie brakuje najważniejszego , czyli klikania w obrazki , bo co z tego że dostałeś odpowiedź (w postaci np "1234"),jak macro dalej nic nie zrobi (nie wyklika poprawnych lub nie numerów obrazków).
Poniższy kod jest kontynuacja od momentu "Otrzymania odpowiedzi od servisu rozwiązującego captcha (w tym przypadku
https://2captcha.com/)"
Cytat:WAIT SECONDS=3
SET !TIMEOUT_STEP 300
TAG POS=1 TYPE=BODY ATTR=* EXTRACT=TXT
'Step 4: Check the captcha answer (text or nothing like #EANF# = Extraction Anchor Not Found)
SET answer EVAL("if (\"{{!EXTRACT}}\" == \"#EANF#\") {var x = \"\";} else {var x = \"{{!EXTRACT}}\";} x;")
'Clean the !EXTRACT variable for the next task
SET !EXTRACT NULL
TAB CLOSE
SET !TIMEOUT_STEP 0
WAIT SECONDS=1
TAB T=1
'FRAME NAME="I1_*"
FRAME F=2
SET !ERRORIGNORE YES
SET n1 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(0,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n1}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n2 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(1,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n2}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n3 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(2,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n3}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n4 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(3,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n4}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n5 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(4,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n5}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n6 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(5,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n6}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n7 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(6,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n7}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n8 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(7,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n8}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET n9 EVAL("var s=\"{{answer}}\"; if(s.match(/^[0-9]+$/) && s.length <= 9 && s.length >= 2) s.substr(8,1); else MacroError(\"Captcha answer is wrong.\")")
TAG POS={{n9}} TYPE=IMG ATTR=SRC:https://www.google.com/recaptcha/api2/payload?c=*
SET !ERRORIGNORE NO
'Click the Verify button
EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV>DIV>DIV:nth-of-type(3)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV" BUTTON=0
WAIT SECONDS=2
FRAME F=0
EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV>FORM>FIELDSET>UL>LI:nth-of-type(6)>INPUT" BUTTON=0
WAIT SECONDS=3
Dla mnie ten kod działa prawidłowo ... ale nie ciesz się zawczasu
, bo na stronie
https://www.google.com/recaptcha/api2/demo , to prosta sprawa żeby : kliknać "checkBox , zapisać obrazek , a potem w nim klikac " , dlatego że tutaj FRAME F= (numer się nie zmienia) i możesz go przypisać na "sztywno" , a co zrobisz w przypadku , jeśli numer frame będzie ulegał zmianie , co refresh strony ?
naprzykład :
Cytat:FRAME F=2
EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV>FORM>FIELDSET>UL>LI:nth-of-type(6)>INPUT" BUTTON=0
Ten kod klika w button "verify" po wyklikaniu obrazków , ale tylko pod warunkiem , że podasz numer frame "FRAME F=2"
Tak jak wspomniałem wyżej , po odświeżeniu strony numer frame się zmieni na np "FRAME F=23" i wtedy kod nie zadziała
dlatego proponuję zacząć pisanie macro z pomocą java scriptu , w którym bezproblemowo można znaleźć bierzący numerek FRAME .
Sam napisałem taki kodzik , ale celowo nie podam ,bo może wtedy zmobilizuje Cię do wysilenia troszkę mózgownicy , a nie przepisywania , czegoś czego w 80% nie rozumiesz
...Pozdrawiam i powodzenia