对于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文件的,然后直接运行代码:
运行操作:点击运行后会直接弹出未记录本地的浏览器打开b站,然后通过运行提示,手动打开记录本地的浏览器(用于对cookies的提取与记录),程序关闭本地浏览器后,会发现多出一个cookies.json文件,自动将未记录本地的浏览器登录到相应的账号。第二次运行,由于已经存在cookies.json文件,通过这个文件可直接登录,不必再次打开本地浏览器。
四、总结
通过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/
转载文章受原作者版权保护。转载请注明原作者出处!