企業微信自動化登錄1+2


企業微信自動化登錄1

 

 

 

 官網文檔:https://seleniumhq.github.io/selenium/docs/api/py/

瀏覽器廠商提供了webdriver驅動,所以用selenium控制瀏覽器不非法

 

 復用已有瀏覽器(調試)

用途:

方便調試selenium腳本

使用remote開啟遠程調試端口

1、將chrome的路徑——C:\Program Files (x86)\Google\Chrome\Application添加至path系統變量,或者將cmd中的路徑切換至chrome安裝目錄

2、chrome瀏覽器全部處於關閉狀態,將chrome高級設置——關閉 Google Chrome 后繼續運行后台應用  也關掉,如下圖

 

 

 

3、命令執行:chrome --remote-debugging-port=9222   (檢查9222端口是否被占用,設置未被占用的端口)

 

 4、執行后驗證方式為:在自動打開的瀏覽器內輸入ip和端口號:127.0.0.1:9222   后,出現如下頁面即為成功

 

 5、在pycharm中輸入運行如下代碼:會看到沒有打開新的瀏覽器,而是直接從第四步的頁面訪問到百度首頁

from selenium import webdriver

class TestWework:
    def setup_method(self):
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"# 設置debug地址
        # self.driver = webdriver.Chrome() 原來的初始化driver
        self.driver=webdriver.Chrome(options=opt)#現在的初始化driver
        
    def teardown_method(self):
        self.driver.quit()

    def test_demo(self):
        self.driver.get("https://www.baidu.com")

 

企業微信自動化登錄2

企業微信的自動化登錄

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

#復用瀏覽器:先通過命令行執行chrome --remote-debugging-port=9222,在打開的瀏覽器內輸入ip和端口:127.0.0.1:9222,或者試下沒這步,直接打開企業微信網址掃碼登錄成功后,運行如下代碼達到復用瀏覽器效果
class TestWework:
    def setup_method(self):
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"  # 設置debug地址
        # self.driver = webdriver.Chrome() 原來的初始化driver
        self.driver = webdriver.Chrome(options=opt)  # 現在的初始化driver

    def teardown_method(self):
        self.driver.quit()

    def test_demo(self):
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
        self.driver.find_element(By.ID, "menu_contacts").click()
        print(self.driver.get_cookies())



#'''
#新開瀏覽器自動掃碼登錄成功:通過將test_demo中獲得的正確的cookie信息加入selenium,達到在新開瀏覽器自動掃碼登錄成功並點擊通訊錄效果
def test_cookie():
    driver=webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx?")#這是掃碼的頁面,因為直接復用cookies去訪問掃碼通過的頁面時會由於cookie內默認域名——weixin.qq.com與selenium默認的域名——data:, 不同而導致cookie失效,所以設置cookie之前必須需先打開一下目標地址——weixin.qq.com
    print(driver.get_cookies())#注意1!此處獲得cookies並不是正確的cookies,和test_demo里打印出的cookies不同,所以若直接用下面注釋的代碼而獲得cookies則會造成認證不通過的問題,自然也無法進入掃碼后的頁面。注意2!driver.get("網址")不成功並不會自動報錯
    #cookies=driver.get_cookies()#獲取掃碼后留在瀏覽器的身份認證cookie信息
    cookies=[{'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.vst', 'path': '/', 'secure': False, 'value': 'ykfrgz5a_7wxiqStqYmoaesVMW3yf3zAQlUyUcG1bobGCoqKRABePufvrgILJSe35QokaZvfoC2cHg7vcp8lOELaXZUcS26JeU9Wz6CODKg1K1YWlgsS-oiouyvoIQUPBb3AlM-KuNcymZFWLHIQmIAxPGJUuWmJJmyTrOAyXF6XpdGLqUcxMWOEJ_Kv_Qn21QI8BKkFNsbAu5xtn0NYM-4RPxjAXdPNF6V6-7BXaV58wQkFuDCgl7ansCfjXXFpLmdeNh7x6rkfLJJkRsjnyA'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.sid', 'path': '/', 'secure': False, 'value': 'ebHWhpltgCr45cJqu4LHh41AXrshLH3B2V5Pu7Ezf086PF5efjOulpY5ZfJVp0yW'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'Hm_lpvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1638934593'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.logined', 'path': '/', 'secure': False, 'value': 'true'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.cs_ind', 'path': '/', 'secure': False, 'value': ''}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.vid', 'path': '/', 'secure': False, 'value': '1688854321275335'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.corpid', 'path': '/', 'secure': False, 'value': '1970325009507720'}, {'domain': '.qq.com', 'expiry': 1702006741, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1848351874.1638869099'}, {'domain': '.qq.com', 'httpOnly': False, 'name': 'pgv_info', 'path': '/', 'secure': False, 'value': 'ssid=s5276701225'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ltype', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.d2st', 'path': '/', 'secure': False, 'value': 'a5436410'}, {'domain': '.work.weixin.qq.com', 'expiry': 1670470592, 'httpOnly': False, 'name': 'Hm_lvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1638890106,1638890113,1638890597,1638934593'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.refid', 'path': '/', 'secure': False, 'value': '39133735411497724'}, {'domain': '.work.weixin.qq.com', 'expiry': 1670405097, 'httpOnly': False, 'name': 'wwrtx.c_gdpr', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.vid', 'path': '/', 'secure': False, 'value': '1688854321275335'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ref', 'path': '/', 'secure': False, 'value': 'direct'}, {'domain': '.qq.com', 'httpOnly': False, 'name': '_qpsvr_localtk', 'path': '/', 'secure': False, 'value': '0.7811498614680983'}, {'domain': '.qq.com', 'expiry': 2147385600, 'httpOnly': False, 'name': 'pgv_pvid', 'path': '/', 'secure': False, 'value': '3178219336'}, {'domain': '.qq.com', 'expiry': 1639021141, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.452945125.1638869099'}, {'domain': '.work.weixin.qq.com', 'expiry': 1641526990, 'httpOnly': False, 'name': 'wwrtx.i18n_lan', 'path': '/', 'secure': False, 'value': 'zh'}]
    for cookie in cookies:
        driver.add_cookie(cookie)#將獲取到的cookies加入selenium
    driver.get("https://work.weixin.qq.com/wework_admin/frame")
    sleep(3)
    driver.find_element(By.ID, "menu_contacts").click()
    driver.quit()
#'''

 

使用yaml文件實時存儲正確cookies的企業微信的自動化登錄升級版

需要用的其他知識點有:

  1. with open(path,模式,encoding="UTF-8") as f: 用法
  2. yaml文件的寫入:yaml.dump(data,file)
  3. yaml文件的讀取:yaml.safe_load(f)

 在代碼中的運用實例如圖中兩處:

 

 詳細代碼如下:

import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
#復用瀏覽器:先通過命令行執行chrome --remote-debugging-port=9222,在打開的瀏覽器內輸入ip和端口:127.0.0.1:9222,或者試下沒這步,直接打開企業微信網址掃碼登錄成功后,運行如下代碼達到復用瀏覽器效果

#第一步:通過復用登錄成功的瀏覽器,函數test_getcookies將實時獲取的正確cookies寫入當前目錄下的data.yaml文件進行存儲
def test_getcookies():
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"  # 設置debug地址
        # driver = webdriver.Chrome() 原來的初始化driver
        driver = webdriver.Chrome(options=opt)  # 現在的初始化driver
        driver.implicitly_wait(5)
        driver.get("https://work.weixin.qq.com/wework_admin/frame")
        data=driver.get_cookies()
        with open("data.yaml","w",encoding="UTF-8") as f:
            yaml.dump(data,f)
#第二步:函數test_login開啟新的瀏覽器,通過讀取data.yaml文件中的cookie給selenium從而完成自動化掃碼登錄
def test_login():
    driver = webdriver.Chrome()
    driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx?")
    with open("data.yaml",encoding="UTF-8") as f:
        yaml_data=yaml.safe_load(f)
        for cookie in yaml_data:
            driver.add_cookie(cookie)  # 將獲取到的cookies加入selenium
    driver.get("https://work.weixin.qq.com/wework_admin/frame")
    sleep(3)
    driver.find_element(By.ID, "menu_contacts").click()
    sleep(3)
    driver.quit()

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM