Python urllib3取り扱い方法をクッキーはどのくらいですか。

StackOverflow https://stackoverflow.com/questions/2422922

  •  19-09-2019
  •  | 
  •  

質問

んへ urllib3 では、接続プールがスレッドに対して安全で性能が良いか、特にク)の書類が---最小限のと言わざるを得ない。urllib2はbuild_openerうようなもの:

#!/usr/bin/python
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")

がurllib3はbuild_opener方法で、私は今では手に入れて、ヘッダ:

#!/usr/bin/python
import urllib3
http_pool = urllib3.connection_from_url("http://example.com")
myheaders = {'Cookie':'some cookie data'}
r = http_pool.get_url("http://example.org/", headers=myheaders)

私は、こうした期待がかかるので教えてくるのです。もうこのタグは"urllib3"をご覧下さい。

役に立ちましたか?

解決

い、正しくありませんぐりをすることです。私は喜んで受け入れ、パッチまた感覚を改善しました。

気をつけなければいけない約への同意が必要となurllib3のHTTPConnectionPoolなどに対応できるようになって"プールの接続"を特定のホストに対してステートフルクライアントこのことは、あってはならないことで、追跡のクッキー以外のプールがあります。

  • shazowのurllib3)

他のヒント

が複数のクッキーに問題はありませんか?

一部のサーバーが複数のSet-Cookieヘッダを返しますが、urllib3辞書のヘッダーを格納し、辞書には同じキーを持つ複数のエントリを許可していません。

httplib2は同様の問題を持っています。

またはそうでないかもしれない: - - urllib3とhttplib2使用の両方の次のコメントがあり、それはhttplibパッケージのHTTPMessageクラスのreadheadersの方法があることが判明しました

  同じ名前の複数のヘッダフィールドが発生した場合、

、それらは、RFC 2616の規則に従って組み合わせられる秒4.2:

    Appending each subsequent field-value to the first, each separated
    by a comma. The order in which header fields with the same field-name
    are received is significant to the interpretation of the combined
    field value.

だから、何のヘッダは失われません。

があり、しかし、問題ヘッダー値内のカンマが存在する場合。私はまだここで何が起こっているかを考え出していませんが、RFC 2616(「ハイパーテキスト転送プロトコル - HTTP / 1.1」)スキミングからとRFC 2965(「HTTP状態管理機構」という。)私は、ヘッダー内のそれはカンマ印象を受けます値は引用符で囲むことになっている。

あなたは、'Cookie'ない'Set-Cookie'を設定し、Webサーバによって設定された'Set-Cookie'する必要があります。

とクッキーは、ヘッダーの1つなので、そのようにやってと間違って何もされています。

あなたはリクエスト・ライブラリを使用する必要があります。それはurllib3を使用しますが、些細なクッキーを追加するようなものになります。

https://github.com/kennethreitz/requestsする

import requests
r1 = requests.get(url, cookies={'somename':'somevalue'})
print(r1.content)

あなたは、このようなコードを使用することができます:

def getHtml(url):
    http = urllib3.PoolManager()
    r = http.request('GET', url, headers={'User-agent':'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36','Cookie':'cookie_name=cookie_value'})
    return r.data #HTML

あなたは置き換える必要がありcookie_nameとcookie_value

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top