初识Python系列(三)

对于Python selenium操作的总结(三)

—— 利用本地储存cookies自动化登录任意网站(在此以b站为示例)

一、思路

自动化登录网站的方式有三种:

与人机识别硬刚,这个比较有挑战性,如果有兴趣的话可以试一下

通过读取有本地记录的浏览器,直接进行cookies登录

通过读取本地存储的cookies,使用任意浏览器进行登录

其中第二项和第三项都差不多,都是由cookies登录,但是第二项是必须启动本地的浏览器才能正常登录,而第三项则通过存储的cookies直接在后续流程中任意启动的浏览器都可以直接登录了。 则我的思路就是:从本地浏览器中读取并存储cookies – – > 形成一个存储cookies的json文件 – – > 通过读取json文件给浏览器添加cookies以实现登录操作。

二、代码

理论成立,代码如下:

from selenium import webdriver
import json
from selenium.webdriver.chrome.options import Options

#用json文件载入cookies值
def get_cookies_local(filename, driver, url):
    #启动chrome安装位置中的chrome.exe文件,默认的chrome文件的安装位置为:C:\Program Files\Google\Chrome\Application
    #若第一次运行则需要在cmd运行打开chrome的指令:D:\Application\Google\chrome.exe --remote-debugging-port=12306
    print('\n\n\n\n  PLEASE PUT "D:\Application\Google\chrome.exe --remote-debugging-port=12306"\
    IN YOUR CMD \n\n\n')
    print("WAITTING FOR YOUR OPERATOR_____")
    options = Options()
    options.add_experimental_option("debuggerAddress", "localhost:12306")
    setter = webdriver.Chrome(options=options)
    #读取本地浏览器上网址的cookies
    setter.get(url)
    cookies= setter.get_cookies()
    with open(filename, 'w') as f:
        json.dump(cookies, f)
    setter.close()
    #获取后直接导入cookies值
    use_option(filename, driver)

使用json文本的值
def use_option(filename, driver):
    #通过判断是否有对应的cookies文件来或cookies文件是否有值决定返回值
    try:
        with open(filename, 'r') as f:
            arr = json.load(f)
            #如果cookies文件不为空则读取并向浏览器添加cookies
            if arr != None:
                for i in range(len(arr)):
                    driver.add_cookie(arr[i])
                return True
            else:
                return False
    except Exception as e:
        return False
​
if __name__ == '__main__':
    #要自动化登录的网站
    url = "https://www.bilibili.com/"
    driver = webdriver.Chrome()
    driver.get(url)
    #通过判断use_option函数的返回值来决定是否重新写入json文件
    if not use_option('cookies.json', driver, url):
        get_cookies_local('cookies.json', driver)
    #登录
    driver.get(url)

三、运行

可以看到没有对应的存储cookies.json文件的,然后直接运行代码:

初识Python系列(三)

运行操作:点击运行后会直接弹出未记录本地的浏览器打开b站,然后通过运行提示,手动打开记录本地的浏览器(用于对cookies的提取与记录),程序关闭本地浏览器后,会发现多出一个cookies.json文件,自动将未记录本地的浏览器登录到相应的账号。第二次运行,由于已经存在cookies.json文件,通过这个文件可直接登录,不必再次打开本地浏览器。

初识Python系列(三)

四、总结

通过cookies自动化登录浏览器多少有点投机取巧,但是也是新手接触浏览器自动化的一种解决办法,希望可以在日后通过各种库的学习以及对opencv、机器学习的掌握,来解决人机识别难题,真正做到用户的操作简洁化。

如需转载,请注明转载地址:https://www.cnblogs.com/lemon-cool/p/15857454.html

Original: https://www.cnblogs.com/cedardaily/p/15857454.html
Author: 柏木的白
Title: 初识Python系列(三)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815055/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球