吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2584|回复: 8
收起左侧

[Python 转载] Python & Selenium 过知乎滑动验证码

  [复制链接]
QingYi. 发表于 2021-6-29 22:54
具体事项就看我这两个帖子 我就直接附上主代码了
https://www.52pojie.cn/thread-1462721-1-1.html
https://www.52pojie.cn/thread-1455857-1-1.html

zhihu_login.png



说简单也不简单,说难也不难。反正花了我大把的时间在selenium的配置上面。

[Python] 纯文本查看 复制代码
chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--disable-gpu')
        chrome_options.add_argument("--no-sandbox")
        browser = webdriver.Chrome(executable_path=r"your driver", chrome_options=chrome_options)
        # browser = webdriver.Chrome()

        try:
            # max window, because we need to slider captcha.  get position
            browser.maximize_window()
        except:
            pass

        browser.get("https://www.zhihu.com/signin")

        browser.find_element_by_css_selector("div[class='SignFlow-tab']").click()
        browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper").send_keys("account")
        browser.find_element_by_css_selector(".SignFlow-password input").send_keys("password")
        browser.find_element_by_css_selector(".Button.SignFlow-submitButton").click()
        time.sleep(3)
        # may login failed
        login_success = False

#  See the configuration in the links above
        chaojiying = Chaojiying_Client('xxxxx', 'xxx', 'xxxx')
        # get verify code
        img_href = browser.find_element_by_css_selector(".yidun_bg-img").get_attribute("src")
        slider = browser.find_element_by_xpath("/html/body/div[4]/div[2]/div/div/div[2]/div/div[2]/div[2]")
        # get picture of gap ==> need ChaoJiYing
        img = urllib.request.urlretrieve(img_href, "code.jpg")
        im = open("code.jpg", "rb").read()
        dic = chaojiying.PostPic(im, 9101)
        # 从返回的值里面找到需要点击的下标
        # href = img.get_attribute("href")
        # 拿到验证码 上传到打码平台去识别,然后去滑动,登录成功 ok 美滋滋.

        # 从返回的值里面找到需要点击的下标
        res = dic['pic_str']
        print(res)
        # 分割 这里大家可以自己输出一下 就知道了
        # 28,110
        temp = res.split(",")
        # adjust data  ==> CJY return wrong dates,we should adjust it.  According to official documents
        # 9101         坐标选一,返回格式:x,y         15
        # x = int(temp[0]) - 10
        x = int(temp[0]) - 15
        y = int(temp[1])
        print("x is {}, y is {}".format(x, y))
        # 移动到某个区域 然后再进行点击
        # 然后找到区域 进行偏移
        # 是事件链
        # print("接下来的事件")
        # 按住不释放 ==> 拖动
        ActionChains(browser).click_and_hold(slider).perform()
        # only xoffset
        ActionChains(browser).move_by_offset(xoffset=x, yoffset=0).perform()
        time.sleep(2)
        # 释放 即可登录成功
        ActionChains(browser).release().perform()






        time.sleep(10)
        # while not login_success:
        #     try:
        #         notify_ele = browser.find_element_by_css_selector(".AppHeader-userInfo")
        #         login_success = True
        #     except:
        #         pass
        browser.close()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lfm333 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

钱多多28 发表于 2021-6-29 23:43
還以為是用OpenCV,....原來接入打碼平臺
jjl 发表于 2021-6-30 00:00
i9420 发表于 2021-6-30 07:22
模拟器是很好。成功率较高。就是这个速度太慢了。还不可以多线程。
lfm333 发表于 2021-6-30 07:43
感谢分享
神、Dawn 发表于 2021-6-30 07:54
用的哪个打码平台
 楼主| QingYi. 发表于 2021-6-30 09:05
钱多多28 发表于 2021-6-29 23:43
還以為是用OpenCV,....原來接入打碼平臺

这个之后我会去学习
 楼主| QingYi. 发表于 2021-6-30 09:06
i9420 发表于 2021-6-30 07:22
模拟器是很好。成功率较高。就是这个速度太慢了。还不可以多线程。

没太懂验证码怎么多线程,去提取多张验证码多线程去处理吗
jjingtian 发表于 2021-6-30 09:40
QingYi. 发表于 2021-6-30 09:06
没太懂验证码怎么多线程,去提取多张验证码多线程去处理吗

他的意思应该是开多个模拟器……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表