如何在python机械化中设置cookie

时间:2013-03-17 09:21:15

标签: python mechanize-python

向服务器发送请求后

    br.open('http://xxxx')
    br.select_form(nr=0)   
    br.form['MESSAGE'] = '1 2 3 4 5'
    br.submit()

我收到了响应标题,其中包含了set-cookie

Set-Cookie: PON=xxx.xxx.xxx.111; expires=Tue, 17-Mar-2015 00:00:00 GMT; path=/

因为mechanize似乎无法记住cookie,所以我想为br设置cookie。我该怎么办?

    cj = mechanize....?
    br.set_cookiejar(cj)

我不知道。 请帮忙

5 个答案:

答案 0 :(得分:4)

我认为这应该做你想要的:

import Cookie
import cookielib
cookiejar =cookielib.LWPCookieJar()

br = mechanize.Browser()
br.set_cookiejar(cookiejar)
cookie = cookielib.Cookie(version=0, name='PON', value="xxx.xxx.xxx.111", expires=365, port=None, port_specified=False, domain='xxxx', domain_specified=True, domain_initial_dot=False, path='/', path_specified=True, secure=True, discard=False, comment=None, comment_url=None, rest={'HttpOnly': False}, rfc2109=False)
cookiejar.set_cookie(cookie)

答案 1 :(得分:4)

您还可以使用mechanize的浏览器类中的addheaders方法手动添加预先存在的Cookie。

br.addheaders = [('Cookie','cookiename=cookie value')]

答案 2 :(得分:1)

import mechanize
import cookielib

br = mechanize.Browser()
cj = cookielib.CookieJar()
br.set_cookiejar(cj)

答案 3 :(得分:1)

要使用 python mechanize 设置 cookie,首先抓取网站 cookie 并将它们保存到文件“cookies.lwp”:

import mechanize, cookielib
cj = cookielib.LWPCookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj)
br.open('https://www.somesite.com')
cj.save(filename="cookies.lwp", ignore_discard=False, ignore_expires=False)

您现在可以将“cookies.lwp”中的任何 cookie 设置为您想要的任何值,然后将它们加载回您的浏览器:

cj.load(filename="modified_cookies.lwp", ignore_discard=False, ignore_expires=False)
br.set_cookiejar(cj)
br.open('https://www.yoursitehere.com')
for cookie in cj:
    print cookie

此视频将带您完成How To Modify Cookies with Python Mechanize

答案 4 :(得分:0)

您可以使用 set_simple_cookie 函数以更好的方式添加 cookie。

考虑到您的 cookie 在 json 中,

{
    "domain": ".example.com",
    "expirationDate": 1651137273.706626,
    "hostOnly": false,
    "httpOnly": true,
    "name": "SecureExampleId",
    "path": "/",
    "sameSite": "strict",
    "secure": true,
    "session": false,
    "storeId": null,
    "value": "v%3D2%26mac%..."

}
            
import http.cookiejar

cookiejar = http.cookiejar.LWPCookieJar()
br.set_cookiejar(cookiejar)

br.set_simple_cookie(cookie['name'], cookie['value'], cookie['domain'], cookie['path'])

response = br.open(url)
print(cookiejar._cookies)