山野村夫-陈墨 发表于 2020-3-11 19:56

登录验证码, 解决了


我不是为云打码打广告, 只是他确实好使
"""
    验证码:
      (1)url不变,图片不变--爬取url地址识别,填入
      (2)url不变, 图片改变
            ·判断原理:在返回验证码的同时生成cookies, 利用cookies和验证码进行识别。
            ·解决方式:
                        (1)获取验证码url;
                        (2)请求验证码地址,获得验证码和cookies。
                        (3)识别验证码, 用(2)获得的cookies进行登录。
            注:(2)条件下 验证码与cookies是对应的
    ps:
      request和selenium的cookies形式不同。


"""
# 针对url不变, 内容改变的爬虫

fromseleniumimportwebdriver
importrequests
importyun_code


driver =webdriver.Chrome()
driver.get("https://passport2.chaoxing.com/login?fid=11135&refer=http://i.mooc.chaoxing.com")

# 1、获取验证码url,返回图片内容和cookies
img = driver.find_element_by_id("numVerCode").get_attribute("src")
# 打印 driver 生成的 cookies
print( driver.get_cookies() )

# 2、请求验证码url
ans = requests.get( img )

# 3、答应验证码cookies
print(ans.cookies )

# 4、requests cookies转化为selenium cookies
ans_cookies= []
for item inans.cookies:
    ans_cookies.append({'name':item.name , 'value':item.value} )

# 5、将验证码写到jpg里
with open(b"file/011.jpg", "wb")as f:
    f.write( ans.content)

# 6、利用云打码获取验证码
code= yun_code.yun.get_code( 1004,b'file/011.jpg')
print(code )


driver.find_element_by_id("unameId").send_keys("username")
driver.find_element_by_id("passwordId").send_keys("password")
# 7、填写验证码
driver.find_element_by_id("numcode").send_keys(bytes.decode(code) )

# 8、将验证码cookies添加到driver
for item inans_cookies:
    driver.add_cookie( item)

# 9、登录
driver.find_element_by_xpath("//*[@id='form']/table/tbody/tr/td/label/input").click()


yuanmengxiaozi 发表于 2020-3-11 20:12

楼主,有成品没?

risingsun 发表于 2020-3-11 21:38

yun_code 的包在哪里?

山野村夫-陈墨 发表于 2020-3-11 22:27

risingsun 发表于 2020-3-11 21:38
yun_code 的包在哪里?

没有,自己写的。
看云打码开发文档,

TomRoosevelt 发表于 2020-4-28 06:31

有滑动验证码的源码吗?

山野村夫-陈墨 发表于 2020-5-2 21:34

TomRoosevelt 发表于 2020-4-28 06:31
有滑动验证码的源码吗?

滑动这块暂时没有解决办法

17621481905 发表于 2021-7-31 15:53

有无大佬有成语验证码识别的成品 求

山野村夫-陈墨 发表于 2021-8-4 23:40

xjl12322dzm 发表于 2021-7-31 16:29
这代码能能跑吗

可以,自己试过的,所以才发帖子的

百事可乐呐 发表于 2021-9-14 16:19

为啥不用requests.Session(),然后用ddddocr的库

山野村夫-陈墨 发表于 2021-9-19 23:37

百事可乐呐 发表于 2021-9-14 16:19
为啥不用requests.Session(),然后用ddddocr的库

没有接触过这个,改天试试
页: [1]
查看完整版本: 登录验证码, 解决了