Python Selenium模拟登录和读取/写入Cookies

本编为大家分享一下Selenium库的一些方法。

简单说一下代码的功能:

main主要是控制浏览器跳转到fofa的登录页面,并自动填写用户名和口令,用户手动填入图形验证码,登录成功后再控制台输入“1”即可调用write_Cookies函数生成cookies文件。

因为登录时会有图形验证码限制,所以现在只能做到半自动化,需要手工输入图形验证码,后面加上验证码识别功能应该就可以实现全自动化了。

主要函数介绍:

get() 控制浏览器跳转到指定url,最常用的

find_element_by_xpath() 在当前页面中使用xpath定位一个标签,文章末尾增加如何获取标签的xpath

refresh() 控制浏览器执行刷新操作

write_Cookies主要是获取cookies,然后写入fofa_cookies这个文件中

主要函数介绍:

get_cookies() 获取当前浏览器中的cookies信息

open(),write(),truncate(),close() 这些都是一些操作文本的函数,这里不多做介绍啦,看注释呗

# -*- coding: utf-8 -*-
# @Version : v1.0
# @Time : 2020-04-30

from selenium import webdriver
import time

class Cookies:
    def __init__(self, login_url, username, password):
        self.login_url = login_url
        self.username = username
        self.password = password
        self.driver = webdriver.Chrome()

    def write_Cookies(self):
        # 获取浏览器所有cookies信息
        cookies = self.driver.get_cookies()
        print(cookies)
        # 打开fofa_cookies文件,如果文件不存在则新建并打开
        try:
            f = open('fofa_cookies', 'x')
        except:
            f = open('fofa_cookies', 'w')
        # 清空文件内容
        f.truncate()
        # 遍历获取到的cookies信息,一行一行的写入fofa_cookies文件中
        for i in cookies:
            f.write(str(i) + "\n")
        # 关闭文件
        f.close()
        print("成功生成cookies文件")

    def main(self):
        # 跳转到fofa官网
        self.driver.get(self.login_url)
        # 通过xpath找到登录的标签,使用.text获取标签的文本
        i = self.driver.find_element_by_xpath('//*[@id="but_zc"]').text
        if i == "登录与注册":
            # 通过xpath找到登录的标签,使用.click()点击操作,即可跳转到登录页面
            self.driver.find_element_by_xpath('//*[@id="but_zc"]').click()
            time.sleep(5)
            # 通过xpath找到填写用户名的文本框,通过.send_keys(),发送指定的字符串到文本框中
            self.driver.find_element_by_xpath('//*[@id="username"]').send_keys(self.username)
            # 与填充用户名同理
            self.driver.find_element_by_xpath('//*[@id="password"]').send_keys(self.password)
            # 通过xpath找到保持登录的单选框,通过.click()点击操作,即可勾选
            self.driver.find_element_by_xpath('//*[@id="rememberMe"]').click()
            input("手动输入验证码,登录成功后在控制台输入“1”,生成cookie文件:")
            self.driver.get(self.login_url)
            self.driver.refresh()
            self.write_Cookies()
        else:
            self.write_Cookies()
        self.driver.close()
        self.driver.quit()



fofa = Cookies("https://fofa.so/", "your_username", "your_password")
fofa.main()

获取标签的xpath

F12查看源码

选中想要获取xpath的标签,右键—>Copy—>Copy Xpath

Python Selenium模拟登录和读取/写入Cookies_第1张图片

获取到的xpath://*[@id="but_zc"]

--------------------------------------------------------------

师傅们可以把在使用Selenium库时遇到的问题或者有什么可实现的有趣的功能,,都可以在评论区打出来,一起讨论和学习

 

你可能感兴趣的:(自动化脚本,Python)