0

我正在尝试使用 2Captcha 服务来解决 h 验证码 V2。

像这样工作:

  1. 你得到一个解决验证码的价值
  2. 然后在 HTML 代码中找到一个 textarea 元素来插入该值(这是我的问题)
  3. 您在该元素中插入值
  4. 您按下提交按钮,验证码就解决了

首先,我将介绍一个工作示例,然后我将介绍我遇到问题的地方。

这是查找并插入获得的值的 HTML 代码:

textarea id="h-captcha-response" name="h-captcha-response" style="display: none;"></textarea>

这是用于插入值的 python 代码:

value = get_value()
insert_solution = 'document.getElementById("h-captcha-response").innerHTML="' + value + '";'
driver.execute_script(insert_solution)

这究竟是什么让你从这个: 在此处输入图像描述

这是结果: 在此处输入图像描述

最后按下提交按钮就完成了。这个例子有效

这是我的问题:在我的情况下,HTML 文档有一个可变 ID,如下所示:

<textarea id="h-captcha-response-0tesbrpxsk8" name="h-captcha-response" style="display: none;"></textarea>

请注意,id 有一个字母数字部分 (0tesbrpxsk8),它总是在变化,因此更难选择。

我试图document.getElementById() 在没有成功的情况下找到一些正则表达式

我也尝试使用:

document.getElementByTagName("textarea").innerHTML=".....

我被困在这里并尝试了其他方法但没有成功,因为我可能是因为我没有很好地实施这些解决方案,或者它们只是不起作用。

我会感谢一些见解,谢谢

4

2 回答 2

1

试试这个:

const textarea = document.querySelector('[id^="h-captcha-response-"]')
textarea.value = "This is inside the textarea!"
<textarea id="h-captcha-response-0tesbrpxsk8" name="h-captcha-response"></textarea>

  • 首先:您设置 textarea 的值textarea.value = "some value"
  • 您应该使用document.querySelector()来选择元素。(你在那里有更多的能力)
  • 您可以使用以下查询选择 id 开头:[id^="start"]
于 2021-05-22T13:48:47.900 回答
1

这将填写所有这些(recaptcha / hcaptcha):

driver.execute_script('''
  let [captcha] = arguments
  [...document.querySelectorAll('[name="h-captcha-response"],[name="g-recaptcha-response"]')].map(el => {
    el.innerHTML = captcha
  })
''', value)
于 2021-05-24T01:07:22.653 回答