我正在业余时间为一个教育机构写一个网站,从我读过的这个地方的统计数据来看,他们似乎有很多残疾学生在那里学习.简而言之,我正在建立一个帐户系统,学生可以登录并接收有关其课程的基本信息,让他们对自己的课程进行评论,以及他们对课程的表现方式.
我对这方面的法律含义不太确定,但我很确定如果您在教育机构工作,那么您的网站可供残障人士使用是法律要求.除了一个问题,代码完全没问题; CAPTCHA.
据我所知,大多数CAPTCHA都是基于图像的,这将使那些使用屏幕阅读器的人感到困难.最重要的是,支持声音读数的设备可能效果不佳,因为在许多建筑物中没有扬声器供用户收听录音.我总是可以使用一个小字段,要求用户将两个数字放在一起但这些对于机器人来说通常太容易攻击.
我可能会在一个小山丘上建造一座山,但对那些对无障碍感兴趣的人来说,这仍然是一个有趣的问题.有谁知道在这种环境中阻止垃圾邮件发送者和用户的好方法?
我制作了一个不和谐的机器人,它使用 selenium 访问网站并获取信息,当我在本地运行代码时,我没有任何问题,但是当我部署到 Heroku 时,我得到的第一个 URL 将我重定向到 page Attention Required! | Cloudflare。
我努力了:
还有许多其他具有我使用的相同设置的:
options = Options()
options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
options.add_experimental_option("excludeSwitches", ["enable-logging", "enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--headless")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
self.driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), options=options)
self.driver.execute_cdp_cmd('Network.setUserAgentOverride', {
"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
Run Code Online (Sandbox Code Playgroud)
但这不起作用,代码仅在本地运行
PS:本地我在Windows上
我重定向到的页面来源:
https://gist.github.com/rafalou38/9ae95bd66e86d2171fc8a45cebd9720c

我正在使用reCAPTCHA提供的ASP.Net插件和控件.如果Web表单上的提交按钮不在验证组中,我可以成功地使控件生效.reCAPTCHA控件没有验证组属性.
当网络表单上有验证组时,是否有人使用此解决方案或任何解决方案来使reCAPTCHA控件正常工作?
我正在向我的某个网站添加CAPTCHA验证,并且需要知道存在哪些开源解决方案.请注意优点和缺点以及它们使用的平台.我主要对ASP.NET解决方案感兴趣,但可以随意包含PHP,Java等.
我对这篇文章的阅读表明,ReCAPTCHA的一个好处是它可以让人类验证OCR /书籍数字化中无法识别的单词.它通过在"你是人吗?"中使用这些词来做到这一点.试验.所以ReCAPTCHA一石二鸟.大!
但我不明白.如果数字化过程无法识别这个词,那么被假定的人输入的输入是什么?这是如何运作的?
是否有像reCAPTCHA这样的CAPTCHA网络服务支持英语以外的语言?
为非英语用户提供本地化的CAPTCHA会很好.
我正在尝试使用python和mechanize从我的移动提供商网站发送短信.
问题是表单有一个验证码图像.使用mechanize我可以获得图像的链接,但是在我访问该链接时它会有所不同.
有没有办法从机械化中获取精确的图片?
我在Django中使用Recaptcha.我使用以下教程将其集成到我的Web应用程序中:http://www.marcofucci.com/tumblelog/26/jul/2009/integrating-recaptcha-with-django/
验证码不会出现在我的机器上.而不是验证码显示以下错误消息:
发生内部错误:4A6376441D250.ADE1949.3546A435
(我每次都得到不同的代码).
看起来 google recaptcha 的工作方式是,如果使用特定令牌进行了验证尝试,则无法再次使用。
文档指出“您将需要调用 grecaptcha.reset() 以要求最终用户再次使用 reCAPTCHA 进行验证”
我正在尝试使用 react-google-recaptcha npm 包尝试此操作。
这是我的代码:
function onChange(grecaptcha) {
console.log(grecaptcha);
grecaptcha.reset(); // this doesn't work
}
class Captcha extends React.Component {
render() {
return <div>
<Recaptcha
sitekey='#'
onChange={onChange(this)}
/> </div>
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用带有响应和秘密值的 google api https://www.google.com/recaptcha/api/siteverify进行服务器端验证时,成功响应在第一次验证后始终评估为“false”。为了防止这种情况,我按照文档中的建议重置了 grecaptcha,但它不起作用。
有什么我想念的吗?
提前致谢
编辑:
https://github.com/dozoisch/react-google-recaptcha提供了 reset() 实用程序函数,这是我在用户解决验证码后尝试调用的函数,想知道我是否没有正确调用它。
我正在尝试使用 OpenCV 和 pytesseract 解决一些简单的验证码。一些验证码样本是:
我试图用一些过滤器去除嘈杂的点:
import cv2
import numpy as np
import pytesseract
img = cv2.imread(image_path)
_, img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, np.ones((4, 4), np.uint8), iterations=1)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imwrite('res.png', img)
print(pytesseract.image_to_string('res.png'))
Run Code Online (Sandbox Code Playgroud)
结果转换后的图像是:
不幸的是,pytesseract 只能正确识别第一个验证码。还有其他更好的改造吗?
最终更新:
正如@Neil 所建议的那样,我尝试通过检测连接的像素来消除噪声。为了找到连接的像素,我找到了一个名为 的函数connectedComponentsWithStats,它检测连接的像素并为组(组件)分配一个标签。通过查找连接组件并删除具有少量像素的组件,我设法使用 pytesseract 获得了更好的整体检测精度。
这是新的结果图像:
captcha ×10
recaptcha ×4
python ×2
asp.net ×1
cloudflare ×1
disability ×1
django ×1
heroku ×1
localization ×1
mechanize ×1
reactjs ×1
redux ×1
redux-form ×1
security ×1
selenium ×1
validation ×1