ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

selenium操作cookies实现免密登录,自动发微博

2019-08-07 16:03:35  阅读:117  来源: 互联网

标签:__ cookies 免密 登录 url selenium driver json


一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站

第一步:获取一个可用的cookies,获取的cookies会保存为一个json格式的文件。不过在打开网站后,登录操作需要自己手动进行一下,代码中有注释,大家可以注意一下,代码如下:

#!/usr/bin/python
#coding=utf-8

from selenium import webdriver
import time
import json

def get_cookies(test_url):
    #保存cookies的文件
    file = 'cookies.json'
    #打开需要获取cookies的网站
    driver = webdriver.Firefox()
    driver.implicitly_wait(5)
    driver.get(test_url)
    driver.maximize_window()
    #网站打开后,在时间内手动执行登录操作
    time.sleep(60)
    #登录成功后,获取cookies并保存为json格式
    cookies = driver.get_cookies()
    fp = open(file,'w')
    json.dump(cookies,fp)
    fp.close()
    #关闭浏览器
    driver.close()

if __name__ == "__main__":
    url = raw_input('please input url:')
    get_cookies(url)

第二步:利用cookies登录网站,先打开要登录的网站,然后将cookies从之前保存的json文件读取出来,然后添加到浏览器,刷新界面,即可实现登录,然后便可以进行发微博的操作,具体元素定位,请大家百度selenium的一些基本用法,此处不再赘述。代码中也给出了不打开浏览器的方式来实现功能。

代码如下:

#!/usr/bin/python
#coding=utf-8

from selenium import webdriver
import json
import time

file = 'cookies.json'
#打开浏览器,若不想打开浏览器运行脚本,可以使用下面注释掉的方法
driver = webdriver.Firefox()

#以headless模式运行脚本,可以实现不打开浏览器对网站进行操作
#option = webdriver.FirefoxOptions()
#option.add_argument(argument='-headless')
#driver = webdriver.Firefox(firefox_options=option)

#打开网址
def open_url(url):
    driver.get(url)
    driver.implicitly_wait(5)
    driver.maximize_window()

#向浏览器添加保存的cookies
def add_cookies():
    fp = open(file,'r')
    cookies = json.load(fp)
    fp.close()
    for cookie in cookies:
        driver.add_cookie(cookie)  

if __name__ == "__main__":
    #输入要打开的网站并打开
    test_url = raw_input('please input url:')
    open_url(test_url)
    time.sleep(5)
    #添加cookies后刷新界面,实现免密登录
    add_cookies()
    driver.refresh()
    # 发送微博
    #定位到微博输入框,点击输入框
    driver.find_element_by_xpath("//textarea[@class='W_input']").click()
    time.sleep(2)
    #输入需要发送的内容
    driver.find_element_by_xpath("//textarea[@class='W_input']").send_keys('Test message')
    time.sleep(3)
    #点击发送按钮
    driver.find_element

 

标签:__,cookies,免密,登录,url,selenium,driver,json
来源: https://www.cnblogs.com/zhazi/p/11315818.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有