您的位置:首页 > 编程语言 > Python开发

Selenium+phantomJS+Python 操作cookie实现自动登录(以音悦台为例)

2017-10-06 23:57 881 查看
每天都在音悦台(yinyuetai)听歌,原来看订阅歌手更新的MV必须登陆,而且原来每次登陆都需要用
geetest
的滑动验证码,懒得对验证码再多做工作。近来发现登陆不用每次输入验证码就动了利用cookie自动登录的念头。

思路

登录,获取cookie

找到登录框界面,音悦台的登录框是动态生成的,需要先点击下
登录tab
,然后才会加载登录框DIV,由于音悦台页面加载比较慢,因此可能需要等待一定时间等待元素加载完成。

在登录框中找到用户名和密码文本框,填入用户名密码,点击登录按钮

页面加载成功后,利用
driver.get_cookies()
得到cookie,返回的对象是一个列表,列表里存放的是以字典形式存放的cookie。

利用
cPickle
库把cookie列表对象保存为本地文件

携带cookie自动登录

先加载需要打开的页面

利用
driver.delete_all_cookies()
删除所有cookie

加载本地保存为pickle文件的cookie

利用
driver.add_cookie()
添加cookie

cookie添加完毕后,再次打开对应的页面

代码

代码不全,仅关键部分

def get_cookie():
driver.get('http://login.yinyuetai.com/')
time.sleep(10)

login_box=driver.find_element_by_class_name("login-active")
common_click(driver,login_box)
print('点击登录框')

login_input=driver.find_elements_by_class_name("login-text-long")
fill_text(driver,login_input[0],'xxxxx')
print('填写用户名!')
fill_text(driver,login_input[1],'xxxxx')
print('填写密码!')
login_btn=driver.find_element_by_class_name('login-submit')
common_click(driver,login_btn)
print('点击登录按钮')
time.sleep(10)

cookie_list = driver.get_cookies()
#print cookie_list
print('获得cookie!')
addtime = time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())
f = open(addtime + '.cookie', 'a+')
pickle.dump(cookie_list, f)
f.close()
print('cookie文件:'+addtime+'.cookie')

def login_by_cookie():
driver.get("http://www.yinyuetai.com")
time.sleep(10)

driver.delete_all_cookies()

f= file('xxxx.cookie', 'r')
cookie_set = pickle.load(f)
for i in cookie_set:
try:
driver.add_cookie(i)
except:
pass

driver.get("http://www.yinyuetai.com")

time.sleep(10)
print driver.current_url
addtime=time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())
driver.get_screenshot_as_file(addtime+'.png')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息