通过selenium登陆,并完成滑动验证码验证来获取登陆cookie

在爬取网站数据时,需要通过登陆账户来获取cookie里的参数,才能向网站请求成功。
access_token
参数access_token和salt 通过登陆账户生成的cookie中携带
因此 首先通过selenium登陆账户
在这里插入图片描述
首先打开网页,定位用户名输入框,和密码输入框,输入后 点击登陆 弹出验证码
代码如下:

    def __init__(self,u,p):
        self.u = u
        self.p = p
        self.LoginClass = 'login'
        # self.proxy = proxy
        proxy = random_proxy()
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_argument('--no-sandbox')
        chrome_options.add_argument('--proxy-server=%s' % proxy)
        # self.browser = webdriver.Chrome()
        self.browser = webdriver.Chrome(chrome_options=chrome_options)
        self.wait = WebDriverWait(self.browser, 80)
        self.browser.set_page_load_timeout(40)
        self.threshold = 60  # 验证码图片对比中RGB的差值,可调
        self.left = 50  # 验证码图片的对比中的起始坐标,即拖动模块的右边线位置
        self.BORDER = 6
        self.page_count = []
        self.url = 'https://www.shujuling.com/login/logining'

    def close(self):
        self.browser.close()

    def open(self):
        """
        # 打开浏览器,并输入账户和密码
        """
        self.browser.maximize_window()
        self.browser.get(self.url)


    def login_web(self):
        user = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='loginName']")))
        password = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='loginPwd']")))
        user.send_keys(self.u)
        password.send_keys(self.p)
        self.login_in()

设置为无头模式,输入后点击弹出验证码
在这里插入图片描述
验证码为极验滑动验证码 ,通过js加载出验证码图片

1,获取完整验证码和有缺口的验证码图片

    def get_images(self):
        """
        获取验证码图片
        :return: 图片的location信息
        """
        """
                从网页的网站截图中,截取验证码图片
                :return: 验证码图片对象
                """
        times = random.uniform(3, 5)
        times = round(times, 1)
        time.sleep(times)
        bg_js = 'return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png");'
        fullbg_js = 'return document.getElementsByClassName("geetest_canvas_fullbg geetest_fade geetest_absolute")[0].toDataURL("image/png");'
        # slice 执行 JS 代码并拿到图片 base64 数据
        bg_info = self.browser.execute_script(bg_js)  # 执行js文件得到带图片信息的图片数据
        bg_base64 = bg_info.split(',')[1]  # 拿到base64编码的图片信息
        bg_bytes = base64.b64decode(bg_base64)  # 转为bytes类型
        with open('bg.png', 'wb') as f:  # 保存图片到本地
            f.write(bg_bytes)

        fullbg_info = self.browser.execute_script(fullbg_js)  # 执行js文件得到带图片信息的图片数据
        fullbg_base64 = fullbg_info.split(',')[1]  # 拿到base64编码的图片信息
        fullbg_bytes = base64.b64decode(fullbg_base64)  # 转为bytes类型
        with open('fullbg.png', 'wb') as f:  # 保存图片到本地
            f.write(fullbg_bytes)
        bg_image = Image.open('bg.png')
        fullbg_image = Image.open('fullbg.png')
        return bg_image, fullbg_image
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值