Panda-Learning icon indicating copy to clipboard operation
Panda-Learning copied to clipboard

增加自动验证码识别

Open mem0rz opened this issue 4 years ago • 38 comments

https://github.com/cybmp3/Panda-Learning/ 增加了验证码识别 https://market.aliyun.com/products/57124001/cmapi027426.html 用的这个识别,还算凑合,有个免费30次的。。。够用好多天了,实在不行你可以阿里云循环注册啥的。。。或者你就买个正式版,或者用别的 使用方式python3 pandalearning.py yourname hidden single

mem0rz avatar Jul 20 '19 08:07 mem0rz

测试方法可行,感谢。只不过获取验证码前需要加个延迟,不然获取不到,我加了3秒可行

freewebcode avatar Jul 22 '19 10:07 freewebcode

测试方法可行,感谢。只不过获取验证码前需要加个延迟,不然获取不到,我加了3秒可行

我加了60s的呀

mem0rz avatar Jul 22 '19 11:07 mem0rz

我在self.driver.find_element_by_id("loginBtn").click() 下面加了 time.sleep(3) 可能代码没同步吧

freewebcode avatar Jul 22 '19 11:07 freewebcode

get_video_links获取失败

chen-sky avatar Jul 22 '19 11:07 chen-sky

https://github.com/cybmp3/Panda-Learning/ 增加了验证码识别 https://market.aliyun.com/products/57124001/cmapi027426.html 用的这个识别,还算凑合,有个免费30次的。。。够用好多天了,实在不行你可以阿里云循环注册啥的。。。或者你就买个正式版,或者用别的 使用方式python3 pandalearning.py yourname hidden single

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

chen-sky avatar Jul 22 '19 11:07 chen-sky

get_video_links获取失败

参考我说的

freewebcode avatar Jul 22 '19 12:07 freewebcode

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

chen-sky avatar Jul 22 '19 14:07 chen-sky

我在self.driver.find_element_by_id("loginBtn").click() 下面加了 time.sleep(3) 可能代码没同步吧

import time 然后在self.driver.find_element_by_id("loginBtn").click()后添加time.sleep(3) 这样吗

chen-sky avatar Jul 22 '19 14:07 chen-sky

我在self.driver.find_element_by_id("loginBtn").click() 下面加了 time.sleep(3) 可能代码没同步吧

谢谢大佬。已经修复。

mem0rz avatar Jul 22 '19 14:07 mem0rz

顺道更新了一波教程,各位有PR直接发来吧,我负责维护到底。LOL

mem0rz avatar Jul 22 '19 14:07 mem0rz

@cybmp3 大佬把你更新的合进来呗

MQL9011 avatar Jul 23 '19 00:07 MQL9011

@cybmp3 大佬把你更新的合进来呗

作者好像不维护了

mem0rz avatar Jul 23 '19 00:07 mem0rz

@cybmp3 联系一下作者, 合个PR应该还是肯的吧

MQL9011 avatar Jul 23 '19 00:07 MQL9011

@cybmp3 我也在学习 参考下隔壁fuck的验证码JS 是否能参考合并使用

424032354 avatar Jul 23 '19 01:07 424032354

@cybmp3 我也在学习 参考下隔壁fuck的验证码JS 是否能参考合并使用

隔壁fuck的代码我没看,你能截一部分吗?我以前用过那个,那个是扫码登录的啊,不是dingding登录的。

mem0rz avatar Jul 23 '19 01:07 mem0rz

@cybmp3 JS 我不熟 我一直写JAVA的 PYTHON基础都没有 参考着写过自动签到的程序而已,隔壁js文件源码:module.exports=function(){const t={"Content-Type":"text/plain; charset=utf-8"},e=(t=>{const e=[];return Object.entries(t).forEach(([t,r])=>{const n=+t+32,o=String.fromCodePoint(n);r.forEach(t=>{e[t]=o})}),e.join("")})({14:[15,20,28],15:[6,7],26:[5],65:[9,14],67:[8,12],68:[29],69:[25,30],70:[16],72:[0,13],75:[19,24],79:[22],80:[3,10],82:[23,26],83:[4,27],84:[1,2,11],86:[31],87:[21],88:[17,18]}),r="OdU2jThhYjN1ZmWzxMDZjOc3ZGE3N0d1NzQ0M9E",n=t=>(t=>t&&"string"==typeof t&&4==t.length)(t=t.replace(/\s/g,""))?t:null,o=async(o,c=r,a=e)=>{try{const e=await fetch(a,{method:"POST",referrer:"",referrerPolicy:"no-referrer",body:JSON.stringify({url:o,token:c}),headers:t}),r=(await e.json()).text;return n(r)}catch(t){return null}};return{getCaptchaText:async(t,e=r,n=10)=>{for(;n>=0;n--){const r=await o(t,e);if(r)return r}}}}();

424032354 avatar Jul 23 '19 01:07 424032354

只需要javascript就可以了 验证码识别也有开源的库

我们的“v v”,阿里修复了,今天就不行了

424032354 avatar Jul 23 '19 02:07 424032354

@FLASH023 其实我一直觉得,在手机端肯定还有更多BUG,或者程序模拟成他本身APP,能做到的事会更多呢。我相信现在这里的人都是本着学习,协助修复BUG的。

424032354 avatar Jul 23 '19 02:07 424032354

我们的“v v”,阿里修复了,今天就不行了

我讲过,这类严重的bug只要一公开,很快就会被修正。 其实这个bug已经很久了。 另外,请注意这一则消息:https://juejin.im/pin/5c948ca6092dcb27c33cce9c (江西一人因编写学习强国辅助程序被刑拘,也是一个因为写外挂程序被抓的人) 虽然不知道真假,但是违规违纪的事情还是小心为妙。 其实懂程序的人,轻松写一段javascript就能完美解决自动学习的问题,自动登陆,自动学习最新内容。但也正是因为这类消息,大家不敢公开自己写的东西。

其实强强要抓作弊非常简单: 1 强强没有做用户名与密码登陆的接口(只有扫码),熊猫和FUCK都是通过钉钉的第三方接口实现登陆的(这也是利用了早期钉钉与强强帐号没区分的BUG,后期注册的强强就与钉钉分离了)。所以只要抓住利用钉钉帐号密码登陆接口的,一定是有问题。 2 获取积分判断,用户在阅读文章的同时在多次刷新积分页面,可以考虑视为行为异常。 3 学习内容的获取,熊猫和FUCK都通过了固定的接口来获取文章数量,而通过封装EXE 请求,在后台是可以通过数据头部信息判断出是非正常浏览。

不卖钱,咱们这个是学习用途

mem0rz avatar Jul 23 '19 02:07 mem0rz

@FLASH023 原来是这样的,移动端不熟,我猜想而已

424032354 avatar Jul 23 '19 04:07 424032354

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

gqyun88 avatar Jul 23 '19 08:07 gqyun88

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

mem0rz avatar Jul 23 '19 08:07 mem0rz

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

半小时前git clone https://github.com/cybmp3/Panda-Learning.git 按你的教程做,依然是

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sophauer/Panda-Learning/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

sophauer avatar Jul 23 '19 09:07 sophauer

我们的“v v”,阿里修复了,今天就不行了

我讲过,这类严重的bug只要一公开,很快就会被修正。 其实这个bug已经很久了。 另外,请注意这一则消息:https://juejin.im/pin/5c948ca6092dcb27c33cce9c (江西一人因编写学习强国辅助程序被刑拘,也是一个因为写外挂程序被抓的人) 虽然不知道真假,但是违规违纪的事情还是小心为妙。 其实懂程序的人,轻松写一段javascript就能完美解决自动学习的问题,自动登陆,自动学习最新内容。但也正是因为这类消息,大家不敢公开自己写的东西。

其实强强要抓作弊非常简单: 1 强强没有做用户名与密码登陆的接口(只有扫码),熊猫和FUCK都是通过钉钉的第三方接口实现登陆的(这也是利用了早期钉钉与强强帐号没区分的BUG,后期注册的强强就与钉钉分离了)。所以只要抓住利用钉钉帐号密码登陆接口的,一定是有问题。 2 获取积分判断,用户在阅读文章的同时在多次刷新积分页面,可以考虑视为行为异常。 3 学习内容的获取,熊猫和FUCK都通过了固定的接口来获取文章数量,而通过封装EXE 请求,在后台是可以通过数据头部信息判断出是非正常浏览。

阿里不可能无脑封作弊的,上头要政绩,单位扫地大妈都得学,扫地大妈会吗?不会。大多都是一个打工仔一次挂好几十个号,封号不存在的

freewebcode avatar Jul 23 '19 13:07 freewebcode

我们的“v v”,阿里修复了,今天就不行了

我讲过,这类严重的bug只要一公开,很快就会被修正。 其实这个bug已经很久了。 另外,请注意这一则消息:https://juejin.im/pin/5c948ca6092dcb27c33cce9c (江西一人因编写学习强国辅助程序被刑拘,也是一个因为写外挂程序被抓的人) 虽然不知道真假,但是违规违纪的事情还是小心为妙。 其实懂程序的人,轻松写一段javascript就能完美解决自动学习的问题,自动登陆,自动学习最新内容。但也正是因为这类消息,大家不敢公开自己写的东西。 其实强强要抓作弊非常简单: 1 强强没有做用户名与密码登陆的接口(只有扫码),熊猫和FUCK都是通过钉钉的第三方接口实现登陆的(这也是利用了早期钉钉与强强帐号没区分的BUG,后期注册的强强就与钉钉分离了)。所以只要抓住利用钉钉帐号密码登陆接口的,一定是有问题。 2 获取积分判断,用户在阅读文章的同时在多次刷新积分页面,可以考虑视为行为异常。 3 学习内容的获取,熊猫和FUCK都通过了固定的接口来获取文章数量,而通过封装EXE 请求,在后台是可以通过数据头部信息判断出是非正常浏览。

阿里不可能无脑封作弊的,上头要政绩,单位扫地大妈都得学,扫地大妈会吗?不会。大多都是一个打工仔一次挂好几十个号,封号不存在的

那么多账号被封 是怎么回事呢?呵呵

别说不会封,我今天用隔壁FUCK 封了 无奈~

424032354 avatar Jul 23 '19 13:07 424032354

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

半小时前git clone https://github.com/cybmp3/Panda-Learning.git

按你的教程做,依然是

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sophauer/Panda-Learning/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

sorry 忘了把驱动放进去了,现在可以了

mem0rz avatar Jul 23 '19 14:07 mem0rz

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

半小时前git clone https://github.com/cybmp3/Panda-Learning.git

按你的教程做,依然是

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sophauer/Panda-Learning/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

sorry 忘了把驱动放进去了,现在可以了

git pull>一樣的出錯 全刪除,重新git clone.重新配置>一樣的出錯

sophauer avatar Jul 23 '19 15:07 sophauer

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

半小时前git clone https://github.com/cybmp3/Panda-Learning.git

按你的教程做,依然是

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sophauer/Panda-Learning/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

sorry 忘了把驱动放进去了,现在可以了

git pull>一樣的出錯 全刪除,重新git clone.重新配置>一樣的出錯

我问个事啊。。你配置了图像识别接口了吗?

mem0rz avatar Jul 24 '19 00:07 mem0rz

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

半小时前git clone https://github.com/cybmp3/Panda-Learning.git

按你的教程做,依然是

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sophauer/Panda-Learning/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

sorry 忘了把驱动放进去了,现在可以了

git pull>一樣的出錯 全刪除,重新git clone.重新配置>一樣的出錯

我问个事啊。。你配置了图像识别接口了吗?

当然 def send_captcha_ocr(self,base64): url = 'https://302307.market.alicloudapi.com/ocr/captcha' dict = {'image': base64,'type': '1001','length':4,} data = urllib.parse.urlencode(dict).encode('utf-8') headers={'key':'填入了APPCODE','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}; request = urllib.request.Request(url = url,data = data,headers = headers,method = 'POST') response = urllib.request.urlopen(request) content = response.read() if (content): obj = json.loads(content) return obj

sophauer avatar Jul 24 '19 02:07 sophauer

get_video_links获取失败 Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sky/xuexi/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

get_video_links获取失败

参考我说的

self.driver.find_element_by_id("loginBtn").click() time.sleep(3) 就这样加???这样的话报错的

同样如此,报错

代码我更新了。试试新的

半小时前git clone https://github.com/cybmp3/Panda-Learning.git

按你的教程做,依然是

get_video_links获取失败

Traceback (most recent call last): File "pandalearning.py", line 181, in total, each = show_score(cookies) File "pandalearning.py", line 49, in show_score total, each = score.get_score(cookies) File "/home/sophauer/Panda-Learning/pdlearn/score.py", line 12, in get_score total = int(json.loads(total, encoding="utf8")["data"]["score"]) TypeError: 'NoneType' object is not subscriptable

sorry 忘了把驱动放进去了,现在可以了

git pull>一樣的出錯 全刪除,重新git clone.重新配置>一樣的出錯

我问个事啊。。你配置了图像识别接口了吗?

当然 def send_captcha_ocr(self,base64): url = 'https://302307.market.alicloudapi.com/ocr/captcha' dict = {'image': base64,'type': '1001','length':4,} data = urllib.parse.urlencode(dict).encode('utf-8') headers={'key':'填入了APPCODE','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}; request = urllib.request.Request(url = url,data = data,headers = headers,method = 'POST') response = urllib.request.urlopen(request) content = response.read() if (content): obj = json.loads(content) return obj headers={'key':'填入了APPCODE', 这个KEY改成Authorization 每个识别商家的headers不一样。 我在里面也写一下。

mem0rz avatar Jul 24 '19 03:07 mem0rz