关于selenium获取cookie然后实现免登陆

    这几天一直想搞明白cookie的爬虫使用,结果从昨天晚上开始试验,selenium获取的cookie怎么也无法实现直接登录,气的想打人。在刚才终于发现一些问题,在和浏览器中的cookie对比发现格式不一样,然后对着他进行格式改变,结果终于成功了,现在以一个模拟登录扣扣空间的例子:

这是模拟点击登录扣扣空间

我请求的这个网址是在分析的时候发现的,发现登录二维码是在一个这样的页面里,这样就很容易的点击进入空间

 
 
from selenium import webdriver
import time
import json
driver.get(
    "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=手机QQ空间&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0")

button=driver.find_element_by_class_name("face")
# print(button)
button.click()

time.sleep(5)
print(driver.current_url)
text=driver.page_source
cookie = driver.get_cookies()
print(cookie)
jsonCookies = json.dumps(cookie)
with open('qqhomepage.json', 'w') as f:
    f.write(jsonCookies)

这样就将获取的cookie保存到文件里了,接下来我们来整理cookie,将至整理为我们需要的格式

import json

str=''
with open('qqhomepage.json','r',encoding='utf-8') as f:
    listCookies=json.loads(f.read())
cookie = [item["name"] + "=" + item["value"] for item in listCookies]
cookiestr = '; '.join(item for item in cookie)
print(cookiestr)
这里我们就获得了需要的cookie值

特别注意:

我就是栽倒在这里的cookie格式里面;

每一句‘name’+'value'后面都要加分号和空格,格式不正确不能使用,牢记牢记

最后我们来验证获取的cookie是否能用;

import requests

url='https://user.qzone.qq.com/1329818994'

headers={
    'cookie':cookiestr,
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
}

html=requests.get(url=url,headers=headers)

print(html.text)

这里的cookie设置为你从文件里读取的cookie

然后请求你的空间网址,你会发现你得到的源代码是你登录空间后的源代码,证明你登录成功。第一次写这个,希望大家多多包涵,遇到不明白的可以留言,或者加我qq

猜你喜欢

转载自blog.csdn.net/weixin_40444270/article/details/80593058