如何使用 Selenium 和 Python 绕过 Google CAPTCHA?
当我尝试抓取某些东西时,Google 会给我一个 CAPTCHA。我可以使用 Selenium Python 绕过 Google CAPTCHA 吗?
例如,它是 Google reCAPTCHA。您可以通过此链接查看此 CAPTCHA:https : //www.google.com/recaptcha/api2/demo
我想在Django中使用captcha实现用户注册.django-registration app 的工作流程很棒,但它没有验证码.
你建议使用什么验证码吗?是否有其他一些注册+验证码变体或有关该主题的有用链接?
这应该适用于Django-1.1并且安装起来不会太难.
Rails中有很多验证码插件,还有许多类型的防止垃圾邮件和泛滥的解决方案.所以这不仅仅是Rails的问题.
我们来看看我们有哪些类型的插件:
1.经典图像验证码(zendesk的Captcha,Simple_captcha,Validates_captcha,winton的Captcha,Raptcha).
正:
负:
2. ReCaptcha(Recaptcha,Rack-recaptcha).
正:
负:
3.蜜罐(Negative-captcha,Trap_door,Reverse_captcha,Honeypot-captcha,Bouncy_bots,invisible_captcha).
正:
负:
4.文本库(Humanizer,Brain_buster,Gotcha).
正:
负:
5.其他(Acts_as_snook)
正:
负:
不知道有没有,因为它很不寻常.但我认为这可能会导致水浸问题,因为它可能需要在某些时候进行调节.
6.类似Akismet的解决方案(不知道它们的效率).
正:
负:
我也应该对我的网站说几句话.用户只有在ajax请求之后才会看到受保护的表单(例如,在将某些内容放入购物车之后).现代机器人是否有能力执行ajax请求和存储cookie?
我对reCAPTCHA的工作原理有点困惑.我使用ROR实现了它.
有时即使我只指定了两个单词中的一个单词,它也会返回true,而有时它会失败.
我真的很困惑,无法理解reCAPTCHA的行为.
我想在Rails项目中实现一个表单提交的验证码,但我不知道该怎么做.我倾向于简单的实现,使用时的可靠性,因为它太复杂,因为我的应用程序不需要太高的安全级别.
有人有什么建议吗?
有时(经常请求资源时)我正在拦截带有验证码的(HTML)资源的呈现.拦截不会产生任何重定向.它发生在同一个URI上.
我现在想知道哪些HTTP状态代码最适合这些要求:
它应该在语义上适合.
谷歌应该明白这个拦截是一个临时条件,不应该影响其索引中的现有资源.
Web浏览器将显示带有验证码的响应正文.
这些是我到目前为止确定的候选人:
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.
这听起来很完美.冲突状态来自那些经常请求资源的客户端.响应还包括足够的信息来识别冲突的根源并解决冲突.
由于服务器临时过载,服务器当前无法处理请求.这意味着这是一个暂时的条件[...].如果已知,则可以在Retry-After报头中指示延迟的长度.
这听起来适度.我甚至可能知道延迟的长度并提供这样的标题.但我在这里错过了用户可以解决问题的重点.此外,范围太广(服务器重载与资源过载).
captcha http http-status-codes http-status-code-503 http-status-code-409
我想阻止垃圾邮件发送者使用我的网站.但我觉得CAPTCHA非常讨厌.我不只是在谈论"键入文本"类型,而是需要用户浪费时间来证明自己是人类的任何东西.
我能在这做什么?
我正在尝试清理上面的图像我已经尝试了几种使用open cv的不同方法,我要么过多地侵蚀原始图像,使得部分字母丢失,如下所示:
我不确定如何摆脱最后一条对角线并修复S,到目前为止,我的代码是:
import cv2
import matplotlib.pylab as plt
img = cv2.imread('/captcha_3blHDdS.png')
#make image gray
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#Blur
blur = cv2.GaussianBlur(gray,(5,5),0)
bilateral = cv2.bilateralFilter(gray,5,75,75)
#Thresholding
ret, thresh = cv2.threshold(bilateral,25,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
#Kernal
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
#other things
erosion = cv2.erode(thresh,kernel,iterations = 1)
closing = cv2.morphologyEx(erosion, cv2.MORPH_CLOSE, kernel, iterations = 1)
#Transform image
dist_transform = cv2.distanceTransform(closing,cv2.DIST_L2,5)
ret, sure_fg = cv2.threshold(dist_transform,0.02*dist_transform.max(),255,cv2.THRESH_BINARY)#,255,0)
#kernel_1
kernel_1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (1, 2))
dilation_1 = cv2.dilate(sure_fg,kernel_1,iterations = 2)
erosion_1 = cv2.erode(dilation_1,kernel_1,iterations = 3)
plt.imshow(erosion_1, 'gray')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,以下是更多从验证码产生的图像类型的例子;

还包含指向包含 …