python打开浏览器后带cookie_Python使用Chrome浏览器的Cookies发起HTTP请求

昨天我写了两篇博客,介绍:

2) 如何解析Cookies字符串、创建CookieJar对象,自动管理Cookies的添加、更新、删除

本篇顺着介绍如何在Python中使用Chrome浏览器已有的Cookies发起HTTP请求。

Chrome的Cookies文件保存路径类似于:

C:\Users\Lucas Lee\AppData\Local\Google\Chrome\User Data\Default\Cookies

其中C:\Users\Lucas Lee\AppData可通过环境变量os.environ[‘LOCALAPPDATA’]获取。

Cookies是一个Sqlite3数据库文件。

了解完上述事实,问题就非常简单了:

从数据库中查询到所需的Cookies,更新到一个CookieJar对象中。再使用这个CookieJar创建opener即可。

函数build_opener_with_chrome_cookies展示了一个基本的实现,当省略domain时,会导入所有的Cookie,建议提供domain参数。

import os

import sqlite3

import cookielib

import Cookie

import urllib2

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'

if domain:

sql += ' where host_key like "%{}%"'.format(domain)

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

for row in conn.execute(sql):

cookie_item = cookielib.Cookie(

version=0, name=row[1], value=row[2],

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()

return urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) # Return opener

if __name__ == '__main__':

opener = build_opener_with_chrome_cookies(domain='192.168.1.253')

html_doc = opener.open('http://192.168.1.253').read()

import re

print 'Title:', re.search('

(.*?)', html_doc, re.IGNORECASE).group(1)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

importos

importsqlite3

importcookielib

importCookie

importurllib2

defbuild_opener_with_chrome_cookies(domain=None):

cookie_file_path=os.path.join(os.environ['LOCALAPPDATA'],r'Google\Chrome\User Data\Default\Cookies')

ifnotos.path.exists(cookie_file_path):

raiseException('Cookies file not exist!')

conn=sqlite3.connect(cookie_file_path)

sql='select host_key, name, value, path from cookies'

ifdomain:

sql+=' where host_key like "%{}%"'.format(domain)

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

forrowinconn.execute(sql):

cookie_item=cookielib.Cookie(

version=0,name=row[1],value=row[2],

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()

returnurllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))# Return opener

if__name__=='__main__':

opener=build_opener_with_chrome_cookies(domain='192.168.1.253')

html_doc=opener.open('http://192.168.1.253').read()

importre

print'Title:',re.search('

(.*?)',html_doc,re.IGNORECASE).group(1)

测试代码中,我在Chrome浏览器登陆了无线路由器,opener打开的页面同样显示处于已登陆状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值