如何通过mechanize处理隐藏的recaptcha?
我正在尝试用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代码你没有运行,或者你是不是在用机械化的用户代理等等。不过,你可能不想和他们在这方面较劲。