欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python HTTP客戶端自定義Cookie實(shí)現(xiàn)實(shí)例

 更新時(shí)間:2017年04月28日 15:09:51   投稿:lqh  
這篇文章主要介紹了Python HTTP客戶端自定義Cookie實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下

Python HTTP客戶端自定義Cookie實(shí)現(xiàn)實(shí)例

幾乎所有腳本語言都提供了方便的 HTTP 客戶端處理的功能,Python 也不例外,使用 urllib 和 urllib2 可以很方便地進(jìn)行 HTTP GET 和 POST 等各種操作。并且還允許以類似于插件的形式加入一些 handler ,來定制 request 和 response ,比如代理的支持和 cookie 的支持都是這樣添加進(jìn)來的。具體來說,通過如下方式構(gòu)造一個(gè) opener :

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

然后這個(gè) opener 就可以處理 cookie 了,相當(dāng)方便,并且可定制性也……好吧,總之,現(xiàn)在我希望能在客戶端手動插入一些 cookie 值,但是不管是 HTTPCookieProcessor 還是 cookielib 里的 CookieJar 都沒有提供類似的方法可以來實(shí)現(xiàn)。

看起來,也并不是我一個(gè)人有這樣的需求,因?yàn)槲以诓檎医鉀Q方案的時(shí)候,還找到了有人給 Python 提交的這個(gè) Patch,就是添加這個(gè)功能。不過看起來好像還沒有被 accept 的樣子,這樣對標(biāo)準(zhǔn)庫做暴力 patch 的方式可移植性似乎也不好。所以我還是另外找了解決方案,其實(shí)也很簡單:看了 HTTPCookieProcessor 的實(shí)現(xiàn)代碼之后,發(fā)現(xiàn)我可以做類似的事情,也就是在寫一個(gè) handler ,把我想要的 cookie 值強(qiáng)制放到 request 對象的 header 中去。

于是我查了 Python 的文檔,對于 handler 的接口好像幾乎沒有描述,于是我就照著 HTTPCookieProcessor 來寫了。這個(gè) handler 應(yīng)該放在正常的 cookie 處理 handler 的后面,然后檢查已經(jīng)存在的 cookie header ,再進(jìn)行合并一下。不過比較詭異的是在 Python 的文檔里并沒有找到 Request 對象有 get_header 之類的方法可以得到已經(jīng)存在的 header 項(xiàng)的值,覺得很詭異,于是直接查了源代碼,才找到了,確實(shí)有這個(gè)方法。之前有聽人說過 Ruby 的文檔做得如何如何的爛,Python 的文檔做得如何如何的好,我雖然沒覺得 Ruby 的文檔很爛,但是也覺得 Python 的文檔確實(shí)不錯(cuò),我最喜歡它末尾的 Examples 。兩個(gè)文檔系統(tǒng)倒是走的不同的路,Ruby 的文檔是從代碼中抽?。ㄌ囟ǜ袷降模┳⑨寔碜詣由傻?,類似于 javadoc ;而 Python 現(xiàn)在用的是獨(dú)立于源代碼的文檔系統(tǒng),人工寫的,不過到頭來居然連函數(shù)都漏掉了,可見人工維護(hù)文檔的弊端還是很明顯的。其實(shí)我見過的文檔系統(tǒng),最好用的應(yīng)該還是屬于 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

然后,構(gòu)造 opener 的時(shí)候加上這個(gè) handler 就可以了:

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

但總歸是一個(gè) workaround ,期待那個(gè) patch 被加入到標(biāo)準(zhǔn)庫中吧。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Python使用enumerate獲取迭代元素下標(biāo)

    Python使用enumerate獲取迭代元素下標(biāo)

    這篇文章主要介紹了python使用enumerate獲取迭代元素下標(biāo),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python?Setuptools的?setup.py實(shí)例詳解

    Python?Setuptools的?setup.py實(shí)例詳解

    setup.py是一個(gè)?python?文件,它的存在表明您要安裝的模塊/包可能已經(jīng)用?Setuptools?打包和分發(fā),這是分發(fā)?Python?模塊的標(biāo)準(zhǔn)。?它的目的是正確安裝軟件,本文給大家講解Python?Setuptools的?setup.py感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • jupyter?notebook內(nèi)核啟動失敗問題及解決方法

    jupyter?notebook內(nèi)核啟動失敗問題及解決方法

    這篇文章主要介紹了解決jupyter?notebook內(nèi)核啟動失敗問題,本文給大家介紹了問題原因分析及解決方案,圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 基于opencv的selenium滑動驗(yàn)證碼的實(shí)現(xiàn)

    基于opencv的selenium滑動驗(yàn)證碼的實(shí)現(xiàn)

    這篇文章主要介紹了基于opencv的selenium滑動驗(yàn)證碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 用Python編寫一個(gè)基于終端的實(shí)現(xiàn)翻譯的腳本

    用Python編寫一個(gè)基于終端的實(shí)現(xiàn)翻譯的腳本

    這篇文章主要介紹了用Python編寫一個(gè)基于終端的實(shí)現(xiàn)翻譯的腳本,代碼基于Python2.x,需要的朋友可以參考下
    2015-04-04
  • pytorch如何實(shí)現(xiàn)邏輯回歸

    pytorch如何實(shí)現(xiàn)邏輯回歸

    這篇文章主要介紹了pytorch如何實(shí)現(xiàn)邏輯回歸問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python對PDF文檔和PPT文檔的操作詳解

    Python對PDF文檔和PPT文檔的操作詳解

    Python辦公?動化是利?Python編程語?來創(chuàng)建腳本和程序,以簡化、加速和?動化?常辦公任務(wù)和?作流程的過程,它基于Python的強(qiáng)?功能和豐富的第三?庫,使得能夠處理各種辦公任務(wù),本文給大家介紹了Python對PDF文檔和PPT文檔的操作,需要的朋友可以參考下
    2023-12-12
  • Django集成CAS單點(diǎn)登錄的方法示例

    Django集成CAS單點(diǎn)登錄的方法示例

    這篇文章主要介紹了Django集成CAS單點(diǎn)登錄的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 基于Python實(shí)現(xiàn)通過微信搜索功能查看誰把你刪除了

    基于Python實(shí)現(xiàn)通過微信搜索功能查看誰把你刪除了

    這篇文章主要介紹了基于Python實(shí)現(xiàn)微信搜索查看誰把你刪除了的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • python類參數(shù)self使用示例

    python類參數(shù)self使用示例

    python中__new__和__init__到底是怎么一回事,使用方法看下面的代碼,大家參考使用吧
    2014-02-02

最新評論