通过获取firefox的session信息,实现自动登录
最近在撸《用python写爬虫》,其中看到这么一章节,讲自动登录:
1.手动登录网站,firefox产生sesion,脚本获取session文件进行解析后实现登录
以下是实现源码:
def login_firefox():
"""load cookies from firefox
"""
session_filename = find_ff_sessions()
cj = load_ff_sessions(session_filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
html = opener.open(COUNTRY_URL).read()
tree = lxml.html.fromstring(html)
print tree.cssselect('ul#navbar li a')[0].text_content()
return opener
def load_ff_sessions(session_filename):
cj = cookielib.CookieJar()
if os.path.exists(session_filename):
try:
json_data = json.loads(open(session_filename, 'rb').read())
except ValueError as e:
print 'Error parsing session JSON:', str(e)
else:
for window in json_data.get('windows', []):
for cookie in window.get('cookies', []):
import pprint; pprint.pprint(cookie)
c = cookielib.Cookie(0, cookie.get('name', ''), cookie.get('value', ''),
None, False,
cookie.get('host', ''), cookie.get('host', '').startswith('.'), cookie.get('host', '').startswith('.'),
cookie.get('path', ''), False,
False, str(int(time.time()) + 3600 * 24 * 7), False,
None, None, {})
cj.set_cookie(c)
else:
print 'Session filename does not exist:', session_filename
return cj
def find_ff_sessions():
"""不同系统的文件路径不同,从上到下分别是linux,os,window
"""
paths = [
'~/.mozilla/firefox/*.default',
'~/Library/Application Support/Firefox/Profiles/*.default',
'%APPDATA%/Roaming/Mozilla/Firefox/Profiles/*.default'
]
for path in paths:
filename = os.path.join(path, 'sessionstore.js')
matches = glob.glob(os.path.expanduser(filename))
if matches:
return matches[0]
if __name__ == '__main__':
login_firefox()
本人window10系统,但是我在firefox文件(AppDataRoamingMozillaFirefoxProfilessv805njd.default)里面就是找不到sessionstore.js
所以,我就奇怪了,这种做法靠谱么?
还是因为firefox版本问题,所以sessionstore.js不存在?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论