基于浏览器的自动获取cookie方案
浏览器
cookie
编程进阶笔记
发布日期
2023-02-01
更新日期
2023-02-01
阅读次数 120
文章字数 1.1k
方法一
使用浏览器的 headless 模式,模拟登录。
然后保存cookie到文件中。
在访问网站的其他页面时,自动填充cookie。
此方案需要使用账户密码,适合于根据账户密码登录的网站。
方法二
方法一比较简单但是局限性也比较大,只能自己使用。
方法二是,基于浏览器内核,做一个小型嵌入浏览器,扩展该功能,这样用户使用该嵌入浏览器访问,就可以直接提取任意cookie。
这是比较完美的方案,就相当于自己做一个浏览器了,但是难度高。
代码示例
获取网站cookie
def get_cookie_from_network():
from selenium import webdriver
url_login = 'http://login.weibo.cn/login/'
driver = webdriver.PhantomJS()
driver.get(url_login)
driver.find_element_by_xpath('//input[@type="text"]').send_keys('your_weibo_accout') # 改成你的微博账号
driver.find_element_by_xpath('//input[@type="password"]').send_keys('your_weibo_password') # 改成你的微博密码
driver.find_element_by_xpath('//input[@type="submit"]').click() # 点击登录
# 获得 cookie信息
cookie_list = driver.get_cookies()
print cookie_list
cookie_dict = {}
for cookie in cookie_list:
#写入文件
f = open(cookie['name']+'.weibo','w')
pickle.dump(cookie, f)
f.close()
if cookie.has_key('name') and cookie.has_key('value'):
cookie_dict[cookie['name']] = cookie['value']
return cookie_dict
从文件中获取cookie
def get_cookie_from_cache():
cookie_dict = {}
for parent, dirnames, filenames in os.walk('./'):
for filename in filenames:
if filename.endswith('.weibo'):
print filename
with open(self.dir_temp + filename, 'r') as f:
d = pickle.load(f)
if d.has_key('name') and d.has_key('value') and d.has_key('expiry'):
expiry_date = int(d['expiry'])
if expiry_date > (int)(time.time()):
cookie_dict[d['name']] = d['value']
else:
return {}
return cookie_dict
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-342.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。
浏览器
cookie
发表评论
相关推荐