如何在 Twitter 验证中获得 arkose lab 的 fc-token

问题描述 投票:0回答:1

enter image description here

我正在尝试在 Python 中使用 Selenium 来检索特定的 HTML 元素,更具体地说是它的值。

`<input type="hidden" id="FunCaptcha-Token" name="fc-token" value="702178f80cd6ade39.2875608305|r=eu-west-1|meta=3|meta_width=558|meta_height=523|metabgclr=transparent|metaiconclr=%23555555|guitextcolor=%23000000|pk=2CB16598-CB82-4CF7-B332-5990DB66F3AB|at=40|ag=101|cdn_url=https%3A%2F%2Fclient-api.arkoselabs.com%2Fcdn%2Ffc|lurl=https%3A%2F%2Faudio-eu-west-1.arkoselabs.com|surl=https%3A%2F%2Fclient-api.arkoselabs.com|smurl=https%3A%2F%2Fclient-api.arkoselabs.com%2Fcdn%2Ffc%2Fassets%2Fstyle-manager">`

如何用 Selenium 检索它?

我正在使用以下代码:

 token_element =  WebDriverWait(self.driver, 10).until(
                EC.presence_of_element_located((By.NAME, "fc-token"))
            )
            logger.info(f"Token key{token_element}")
            publickey = re.search(r'pk=([0-9A-Fa-f-]+)', token_element.get_attribute("value"))
            logger.info(f"PUBLIC key{publickey}")

但从未被发现。我添加了一条打印语句来检查 DOM:

print(f"DOM\n {self.driver.page_source}") 

但是缺少该元素。

有人可以帮我解决这个问题吗?

提前致谢。

python selenium-webdriver web-scraping twitter captcha
1个回答
0
投票

使用以下代码获取值:

driver.switch_to.default_content()
arkose_iframe =  driver.find_element(

    By.XPATH, 
    "//iframe[@id='arkose_iframe']"
)
driver.switch_to.frame(arkose_iframe)

verification_challenge_iframe =  driver.find_element(
    By.XPATH, 
    "//iframe[@title='Verification challenge']"
) 
driver.switch_to.frame(verification_challenge_iframe)
authenticate_button =  driver.find_element(
    By.XPATH, 
    "//input[@name='fc-token']"
)
if authenticate_button:
        authenticate_value = authenticate_button.get_property('value')

        public_key = re.findall(r'\|pk\=([^\|]+)', authenticate_value)[0]
        surl = re.findall(r'\|surl\=([^\|]+)', authenticate_value)[0]

© www.soinside.com 2019 - 2024. All rights reserved.