首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2 2captcha + selenium

2 2captcha + selenium
EN

Stack Overflow用户
提问于 2018-12-09 00:21:35
回答 1查看 6.1K关注 0票数 1

所以我正在使用这个2 2captcha并在像omegle.com这样的站点上测试它。captcha解决方案发生了,但是框没有被标记,什么也没有发生。不知道为什么,我知道2 2captcha运行得很好.但是,它是否只适用于HTTP请求,而不适用于selenium?

下面是插入到下面代码中的API链接:example.py

代码语言:javascript
运行
复制
from selenium import webdriver
from time import sleep
from selenium.common.exceptions import InvalidElementStateException
from selenium.common.exceptions import UnexpectedAlertPresentException
import time,os
import requests

fp = webdriver.FirefoxProfile('C:\\Users\\mo\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\b0wnbtro.dev-edition-default')
interest = input("Enter the interests seperate by a comma ")
msg1 = "1"
msg2 ="2"
msg3 = "3"
msg4 = "4"
driver = webdriver.Firefox(fp)

#2CAPTCHA API CODE INSERTED HERE FOR A TEST RUN BEFORE BEING INCORPORATED IN A LOOP

def main():
    try:
        driver.get('http://www.omegle.com')
        time.sleep(1)
        #driver.find_elements_by_xpath("//*[contains(text(), 'I'm not a robot')]")
        #send.click()
        driver.find_element_by_xpath('//textarea[@rows="3"]').clear()
        message = driver.find_element_by_xpath('//textarea[@rows="3"]')
        time.sleep(3)
        message.send_keys(msg1)
        send = driver.find_element_by_xpath('//button[@class="sendbtn"]')
        send.click()
        time.sleep(6)
        message.send_keys(msg2)
        send = driver.find_element_by_xpath('//button[@class="sendbtn"]')
        send.click()
        time.sleep(10)
        message.send_keys(msg3)
        send = driver.find_element_by_xpath('//button[@class="sendbtn"]')
        send.click()
        time.sleep(25)
        message.send_keys(msg4)
        send = driver.find_element_by_xpath('//button[@class="sendbtn"]')
        send.click()
        disconnect = driver.find_element_by_xpath('//button[@class="disconnectbtn"]')
        disconnect.click()
        disconnect = driver.find_element_by_xpath('//button[@class="disconnectbtn"]')
        disconnect.click()
        disconnect = driver.find_element_by_xpath('//button[@class="disconnectbtn"]')
        disconnect.click()
    except (InvalidElementStateException, UnexpectedAlertPresentException):
            main2()

def main2():
    try:           
        driver.get('http://www.omegle.com')
        interest1 = driver.find_element_by_xpath('//input[@class="newtopicinput"]')
        interest1.send_keys(interest)
        btn = driver.find_element_by_id("textbtn")
        btn.click()
        time.sleep(5)
        driver.find_element_by_xpath('//textarea[@rows="3"]').clear()
        message = driver.find_element_by_xpath('//textarea[@rows="3"]')
        time.sleep(1)
        time.sleep(2)
        message.send_keys(msg1)
        send = driver.find_element_by_xpath('//button[@class="sendbtn"]')
        send.click()
        time.sleep(6)
        message.send_keys(msg2)
        send.click()
        time.sleep(10)
        message.send_keys(msg3)
        send.click()
        time.sleep(25)
        message.send_keys(msg4)
        send.click()
        send.click()
        disconnect = driver.find_element_by_xpath('//button[@class="disconnectbtn"]')
        disconnect.click()

    except (InvalidElementStateException,UnexpectedAlertPresentException) :
            disconnect = driver.find_element_by_xpath('//button[@class="disconnectbtn"]')
            disconnect.click()
    else:
        main2()       

while True:
    try:
        main2()
    except (InvalidElementStateException,UnexpectedAlertPresentException) :
        main()
EN

回答 1

Stack Overflow用户

发布于 2019-08-01 13:57:21

我希望你已经找到了一个解决方案,但想给那些在同一问题上陷入困境的人留下一个评论。

  1. API也适用于Selenium。
  2. 复选框将不会被勾选,它是由ReCaptcha javascript控制的,您不能碰它。
  3. 您所需要做的就是将令牌放入g-recaptcha-response字段。使用Selenium,您可以执行JavaScript
代码语言:javascript
运行
复制
document.querySelector('#g-recaptcha-response').textContent='token_string'
  1. 在您的情况下,由于没有提交表单,所以您也必须执行回调函数,即JavaScript。例如:
代码语言:javascript
运行
复制
___grecaptcha_cfg.clients[0].NY.N.callback('token_string')

回调函数的路径会发生变化,因此您需要找到一个探索___grecaptcha_cfg对象的有效路径。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53688300

复制
相关文章

相似问题

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