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

每天都在音悦台(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') 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值