每天都在音悦台(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')