Python读取谷歌(google)浏览器cookie并实现登录

以下代码实现使用谷歌浏览器的cookie登录京东网站并获取订单列表

# -*- coding:'utf-8' -*-

import sqlite3
import cookielib
import urllib2
import os,sys
import win32crypt


def build_opener_with_chrome_cookies(domain=None):
    cookie_file_path = os.path.join(os.environ['LOCALAPPDATA'], r'Google\Chrome\User Data\Default\Cookies')
    if not os.path.exists(cookie_file_path):
        raise Exception('Cookies file not exist!')
    conn = sqlite3.connect(cookie_file_path)
    # sql = 'select host_key, name, value, path from cookies'
    sql="select host_key,name,encrypted_value,path from cookies";
    if domain:
        sql += ' where host_key like "%{}%"'.format(domain)

    cookiejar = cookielib.CookieJar()  # No cookies stored yet

    for row in conn.execute(sql):
        pwdHash = str(row[2])
        try:
            ret = win32crypt.CryptUnprotectData(pwdHash, None, None, None, 0)
        except:
            print 'Fail to decrypt chrome cookies'
            sys.exit(-1)

        cookie_item = cookielib.Cookie(
            version=0, name=row[1], value=ret[1],
            port=None, port_specified=None,
            domain=row[0], domain_specified=None, domain_initial_dot=None,
            path=row[3], path_specified=None,
            secure=None,
            expires=None,
            discard=None,
            comment=None,
            comment_url=None,
            rest=None,
            rfc2109=False,
        )
        cookiejar.set_cookie(cookie_item)  # Apply each cookie_item to cookiejar
    conn.close()
    proxy = {'http':'27.24.163.155:10'}
    return urllib2.build_opener(urllib2.ProxyHandler(proxy),urllib2.HTTPCookieProcessor(cookiejar))  # Return opener
)  # Return opener

if __name__ == '__main__':
    opener = build_opener_with_chrome_cookies(domain='jd.com')
    headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",
               'Referer': 'https://www.jd.com/'}
    url='https://order.jd.com/center/list.action'
    req = urllib2.Request(url, headers=headers)
    html_doc = opener.open(req).read()
    print html_doc.decode('gbk').encode('utf-8')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值