我正在尝试使用Python的机械化功能自动完成网站上的表格以用于学术目的。
当人填写并提交表格时,就不会再输入任何信息。
但是,当我通过Python中的机械化为表单填写控件时,显然存在一个隐藏控件。
<HiddenControl(recaptcha_response_field=manual_challenge)>
由于从未向人类显示此重新捕获代码,因此我不知道它在寻找什么,或者就此而言,什么是manual_challenge。
因此,我的问题是,我如何应对这一挑战,以便继续自动化/机械化?
我在下面发布了我一直在使用的脚本,以防某些错误。
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()
最佳答案
很明显,该站点已针对您这样的机器人设置了保护措施。如果这确实是出于学术目的,请将其邮寄并要求提供数据。
要绕过站点保护措施-完全是另一回事,但是您应该调查他们如何知道自己是机器人-是否有未运行的javascript,是否使用了机械化用户代理等。您可能没有不想和他们一起进入那个战场。
关于python - 如何通过机械化传递隐藏的Recaptcha?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25073986/