首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在有条件的iMacro中循环|如果重复不正确,则解决验证码

在有条件的iMacro中循环|如果重复不正确,则解决验证码
EN

Stack Overflow用户
提问于 2016-12-12 13:01:21
回答 1查看 743关注 0票数 0

我正在尝试解决验证码,并继续进行其余的任务,但问题是,如果我得到了错误的答案,我可以反馈它是否正确,但不能立即再次解决验证码,如果错误的验证码,页面不会前进,它最终会在分配的时间和超时后返回开始,但我想再次循环验证码解决区域的一部分。我的代码工作得很好,如果验证码的答案是正确的,那么从头到尾,即使是几天,这是代码

代码语言:javascript
运行
复制
SET apikey G9W API KEY GO HERE
SET !VAR1 NULL
SET !VAR2 NULL
SET !VAR3 NULL
SET !VAR4 NULL

'Step 1: Open WEBSITE
SET !ERRORIGNORE YES
URL GOTO=URL TO GO
WAIT SECONDS=10

URL GOTO=javascript:window.scrollBy(0,450)

'Step 2: Save Captcha ScreenShot
FILEDELETE NAME=d:\test.jpg
'SET !ERRORIGNORE NO
ONDOWNLOAD FOLDER=d:\ FILE=test.jpg
WAIT SECONDS=10
TAG POS=1 TYPE=DIV ATTR=ID:adcopy-puzzle-image CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT
WAIT SECONDS=5

'Step 3: Send Captcha For Solving to 9kw
TAB OPEN
TAB T=2
URL GOTO=http://www.9kw.eu/grafik/form.html
TAG POS=1 TYPE=INPUT ATTR=NAME:apikey CONTENT={{apikey}}
TAG POS=1 TYPE=INPUT ATTR=NAME:prio CONTENT=0
TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:selfsolve CONTENT=NO
TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:confirm CONTENT=NO
TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:case-sensitive CONTENT=NO
TAG POS=1 TYPE=INPUT ATTR=NAME:source CONTENT=imacros
TAG POS=1 TYPE=INPUT ATTR=NAME:file-upload-01 CONTENT=d:\test.jpg
TAG POS=1 TYPE=INPUT ATTR=TYPE:submit
SET !EXTRACT_TEST_POPUP NO
SET !TIMEOUT_STEP 180
TAG POS=1 TYPE=INPUT ATTR=NAME:captchaid EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
'Clean the !EXTRACT variable for the next task
SET !EXTRACT NULL
'Extract the characters that are recoginzed from the picture of captcha.
TAG POS=1 TYPE=INPUT ATTR=NAME:result EXTRACT=TXT
WAIT SECONDS=1
TAB CLOSE

'Step 4: Check the captcha answer (text or nothing like #EANF# = Extraction Anchor Not Found)
SET !VAR2 EVAL("if (\"{{!EXTRACT}}\" == \"#EANF#\") {var x = \"\";} else {var x = \"{{!EXTRACT}}\";} x;")
'Clean the !EXTRACT variable for the next task
SET !EXTRACT NULL

'Step 5: Fill the recognized characters to the verification box
TAB T=1
TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:adcopy_response CONTENT={{!VAR2}}
SET !TIMEOUT_STEP 40
WAIT SECONDS=5
SET !ERRORIGNORE YES
TAG POS=1 TYPE=INPUT:SUBMIT ATTR=ID:subbmit
WAIT SECONDS=5

'Step 6: Check and send the captcha feedback back to the captcha service (OK:1, NotOK:2, EN: Right/False, DE: Richtig/Falsch)
SET !EXTRACT NULL
SET !TIMEOUT_STEP 10
TAG POS=1 TYPE=P ATTR=TXT:Wrong<SP>Captchas EXTRACT=TXT
SET !VAR3 EVAL("if (\"{{!EXTRACT}}\" == \"#EANF#\") {var x = \"1\";} else {var x = \"2\";} x;")
TAB OPEN
TAB T=2
SET !TIMEOUT_STEP 60
URL GOTO=http://www.9kw.eu/index.cgi?source=imacros&action=usercaptchacorrectback&apikey={{apikey}}&correct={{!VAR3}}&id={{!VAR1}}
WAIT SECONDS=2
TAB CLOSE
TAB T=1
SET !VAR4 {{!VAR3}}

'Step 7 NEXT Tasks

我想从步骤2循环到步骤6,如果!VAR3的值为2,表示验证码不正常,但如果值为1,则继续执行,这意味着验证码是正确的。我尝试将宏拆分为3个宏,第一个宏包含步骤1,第二个宏包含步骤2到步骤6,第三个宏包含步骤7及后续步骤,并尝试在js脚本中调用它们,如下所示

代码语言:javascript
运行
复制
//Step 1 Open Website
iimPlay("test1.iim");

//STEP 2 to 6 Fill Captcha untill right

for(i=2;i<=1;i--)
{
iimSet("{{!VAR4}}",i);
iimPlay("test2.iim");
}

//STEP 7 Go About doing your thing
iimPlay("test3.iim");

但这通常会播放测试1跳过测试2和测试部分3我尝试将所有代码放在js文件中,然后尝试同样的事情,第二部分也跳过,我想要!VAR3的值,或者控制循环并重复,直到它有值1。

请帮我循环这第二部分,我知道我不能在iim文件中做到这一点,我必须使用java,我不知道编程,通常在DOS中,我可以标记东西,只需指向GOTO标记等,但在这里我不知道该怎么做

EN

Stack Overflow用户

发布于 2017-11-26 06:16:53

您可以使用iimGetLastExtract()从iimPlay返回值。请参阅http://wiki.imacros.net/iimGetLastExtract()

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41094464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档