本编为大家分享一下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()
F12查看源码
选中想要获取xpath的标签,右键—>Copy—>Copy Xpath
获取到的xpath://*[@id="but_zc"]
--------------------------------------------------------------
师傅们可以把在使用Selenium库时遇到的问题或者有什么可实现的有趣的功能,,都可以在评论区打出来,一起讨论和学习