实例讲解Python HTTP客户端如何实现自定义Cookie实现

  • 时间:
  • 2954人关注

这篇文章主要介绍了Python HTTP客户端自定义Cookie实现实例的相关资料,需要的朋友可以参考下,另外这篇文章主要知识点是关于Python、HTTP、Cookie、Python的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

Python HTTP客户端自定义Cookie实现实例

几乎所有脚本语言都提供了方便的 HTTP 客户端处理的功能,Python 也不例外,使用 urllib 和 urllib2 可以很方便地进行 HTTP GET 和 POST 等各种操作。并且还允许以类似于插件的形式加入一些 handler ,来定制 request 和 response ,比如代理的支持和 cookie 的支持都是这样添加进来的。具体来说,通过如下方式构造一个 opener :

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())

然后这个 opener 就可以处理 cookie 了,相当方便,并且可定制性也……好吧,总之,现在我希望能在客户端手动插入一些 cookie 值,但是不管是 HTTPCookieProcessor 还是 cookielib 里的 CookieJar 都没有提供类似的方法可以来实现。

看起来,也并不是我一个人有这样的需求,因为我在查找解决方案的时候,还找到了有人给 Python 提交的这个 Patch,就是添加这个功能。不过看起来好像还没有被 accept 的样子,这样对标准库做暴力 patch 的方式可移植性似乎也不好。所以我还是另外找了解决方案,其实也很简单:看了 HTTPCookieProcessor 的实现代码之后,发现我可以做类似的事情,也就是在写一个 handler ,把我想要的 cookie 值强制放到 request 对象的 header 中去。

于是我查了 Python 的文档,对于 handler 的接口好像几乎没有描述,于是我就照着 HTTPCookieProcessor 来写了。这个 handler 应该放在正常的 cookie 处理 handler 的后面,然后检查已经存在的 cookie header ,再进行合并一下。不过比较诡异的是在 Python 的文档里并没有找到 Request 对象有 get_header 之类的方法可以得到已经存在的 header 项的值,觉得很诡异,于是直接查了源代码,才找到了,确实有这个方法。之前有听人说过 Ruby 的文档做得如何如何的烂,Python 的文档做得如何如何的好,我虽然没觉得 Ruby 的文档很烂,但是也觉得 Python 的文档确实不错,我最喜欢它末尾的 Examples 。两个文档系统倒是走的不同的路,Ruby 的文档是从代码中抽取(特定格式的)注释来自动生成的,类似于 javadoc ;而 Python 现在用的是独立于源代码的文档系统,人工写的,不过到头来居然连函数都漏掉了,可见人工维护文档的弊端还是很明显的。其实我见过的文档系统,最好用的应该还是属于 Emacs/Elisp 了吧。 不过,废话少讲,handler 如下:

class SimpleCookieHandler(urllib2.BaseHandler):
 def http_request(self, req):
  simple_cookie = 'cc98Simple=1'
  if not req.has_header('Cookie'):
   req.add_unredirected_header('Cookie', simple_cookie)
  else:
   cookie = req.get_header('Cookie')
   req.add_unredirected_header('Cookie', simple_cookie + '; ' + cookie)
  return req

然后,构造 opener 的时候加上这个 handler 就可以了:

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(), 
SimpleCookieHandler())

但总归是一个 workaround ,期待那个 patch 被加入到标准库中吧。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


上一篇:介绍Python如何获取文件所在目录和文件名

下一篇:深入解析python中的实例方法、类方法和静态方法

相关内容

  • Python如何限制输出日志的大小

    这篇文章主要介绍了Python 限制输出日志的大小方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    05-06Python限制日志大小

    阅读更多
  • python实现可视化的MD5、sha256哈希加密小工具

    这篇文章主要介绍了详解python实现可视化的MD5、sha256哈希加密小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    04-07python MD5、sha256哈希加密

    阅读更多
  • Python gevent协程切换实现方法

    这篇文章主要介绍了Python gevent协程切换实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    04-07Python gevent协程切换

    阅读更多
  • python/golang实现循环链表的代码

    这篇文章主要介绍了python/golang如何实现循环链表,帮助大家更好的理解和学习循环链表的实现方法,感兴趣的朋友可以了解下

    04-07python/golang 循环链表

    阅读更多
  • 2020版Python学习路线图(附学习资料)

    这篇文章主要介绍了Python学习路线图(2020最新版),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    04-07Python学习路线图

    阅读更多
  • Python渗透测试编程技术:方法与实践

    Python渗透测试编程技术:方法与实践

    《Python渗透测试编程技术:方法与实践》由资深的网络安全教师撰写,内容围绕如何使用目前备受瞩目的Python语言进行网络安全编程展开。《Python渗透测试编程技术:方法与实践》从Python的基础讲起,系统讲述了网络安全的作用、方法论,Python在网络安全管理上的应用,以及Python在实现这些应用时相关的网络原理和技术。

    大小:167.2 MBPython编程

    点击下载
  • Python3标准库

    Python3标准库

    这书由杰出Python权威专家亲身绘制,Python語言的关键开发者鼎力推荐。 对程序猿来讲,标准库与語言自身 一样关键,它就象1个百宝箱,能为各种各样普遍的每日任务出示极致的解决方法,因

    大小:148.9 MBPython

    点击下载
  • Python神经网络编程

    Python神经网络编程

    这是一本自己动手用Python编写神经网络的力作,详细介绍了理解神经网络如何工作所必须的基础知识,并介绍了所需的微积分知识和树莓派知识,欢迎下载

    大小:11.5 MBPython编程

    点击下载
  • Python文本分析

    Python文本分析

    本书是Intel首席科学家撰写,全面系统阐释Python文本分析的相关基础知识、实用技术及实践,介绍了文本和语言语法、结构和语义的基础概念和高级概念等,欢迎下载

    大小:100.4 MBPython编程

    点击下载
  • NumPy攻略:Python科学计算与数据分析

    NumPy攻略:Python科学计算与数据分析

    《NumPy攻略:Python科学计算与数据分析》详细介绍了70多种多样学习培训Python开源系统课堂教学库NumPy的趣味方式,教會用户怎样安裝和应用NumPy,并掌握别的某些有关定义,从而把握NumPyarrays以

    大小:33.6 MBNumPy

    点击下载
  • 卷积神经网络的Python实现

    卷积神经网络的Python实现

    卷积神经网络是深度学习重要的模型之一。本书是卷积神经网络领域的入门读物,假定读者不具备任何机器学习知识。书中尽可能少地使用数学知识,从机器学习的概念讲起,以卷积神经网络的zui新发展结束。 本书首先简单介绍了机器学习的基本概念,详细讲解了线性模型、神经网络和卷积神经网络模型,然后介绍了基于梯度下降法的优化方法和梯度反向传播算法,接着介绍了训练网络前的准备工作、神经网络实战、卷积神经网络的应用及其发展。针对

    大小:8455 MB MB神经网络

    点击下载
  • Selenium3自动化测试实战:基于Python语言

    Selenium3自动化测试实战:基于Python语言

    《Selenium3自动化测试实战基于Python语言》重要知识结构图总结得出: (1)Python3编程语言基础精解 (2)依据20个例证呈现WebDriverAPI的运用场景 (3)unittestpytest两大单元测试构架多方位详解 (4)数据统计

    大小:99.55 MBSelenium3

    点击下载
  • Python生物信息学数据管理(含源码)

    Python生物信息学数据管理(含源码)

    生物科学学校的Python课程内容教材内容,合适大学本科课堂教学或制造行业人员的Python短期培训班。这书案例借以处理分子生物学难题,根据程序编写手法的方式,包含尽量多的机构、剖析、

    大小:70.7 MBPython

    点击下载
  • 数据结构 Python语言描述

    数据结构 Python语言描述

    在电子信息科学中,数据结构是这门升阶性课程内容,定义抽象性,难度系数很大。Python语言的英语的语法简易,易用性强。用Python来解读数据结构等主题风格,比c语言等保持起來更加非常容

    大小:101 MBPython

    点击下载

学习笔记