如何通过mechanize处理隐藏的recaptcha?

3 投票
1 回答
2504 浏览
提问于 2025-04-18 15:37

我正在尝试用Python的mechanize库自动填写一个网站上的表单,目的是为了学术研究。

当人类填写这个表单并提交时,是没有出现验证码的。

但是当我通过Python的mechanize来填写表单时,似乎有一个隐藏的控件是验证码。

<HiddenControl(recaptcha_response_field=manual_challenge)>

因为这个验证码对人类来说是看不见的,所以我不知道它到底在检查什么,或者说什么是手动挑战。

所以我想问的是,我该如何通过这个挑战,以便继续我的自动化操作和使用mechanize?

我把我正在使用的脚本贴在下面,以防有什么问题。

import mechanize
import re

#constants
TEXT = "hello world!"

br = mechanize.Browser()
#ignore robots.txt
br.set_handle_robots(False)

br.addheaders = [('User-agent', 'Firefox')]

#open the page
response = br.open("http://somewebsite.com")

#this is the only form available 
br.select_form("form2")

br.form.set_all_readonly(False)

cText = br.form.find_control("text")
cText.value = TEXT

#now submit our response
response = br.submit()
br.back()

#verify the url for error checking
print response.geturl()

#print the data to a text file
s = response.read()
w = open("test.txt", 'w')
print>>w, s
w.close()

1 个回答

0

这个网站显然对像你这样的机器人设置了保护。如果你真的是为了学术研究,可以给他们发邮件请求数据。

想要绕过这个网站的保护措施,那就另当别论了。你应该研究一下他们是怎么知道你是个机器人的,比如有没有什么JavaScript代码你没有运行,或者你是不是在用机械化的用户代理等等。不过,你可能不想和他们在这方面较劲。

撰写回答