相关疑难解决方法(0)

使用请求模块,如何在请求响应中处理'set-cookie'?

我正在尝试打开登录页面(GET),获取网络服务器提供的cookie,然后提交用户名和密码对以登录网站(POST).

看看这个Stackoverflow问题/答案,我认为我会做以下事情:

import requests
import cookielib


URL1 = 'login prompt page'
URL2 = 'login submission URL'
jar = cookielib.CookieJar()

r = requests.get(URL1, cookies=jar)
r2 = requests.post(URL2, cookies=jar, data="username and password data payload")
Run Code Online (Sandbox Code Playgroud)

但是,在标题中r有一个set-cookie,但在jar对象中没有变化.事实上,jar正如链接问题的回答所表明的那样,没有任何内容被填充.

我在我的代码中通过使用头文件dict并在执行GET或POST之后解决这个问题,使用它来处理set-cookie标头:

headers['Cookie'] = r.headers['set-cookie']
Run Code Online (Sandbox Code Playgroud)

然后在请求方法中传递标头.这是正确的,还是有更好的方法来应用set-cookie

python cookies python-2.7 python-requests

17
推荐指数
3
解决办法
3万
查看次数

如何在Python中将cookie添加到现有的cookielib CookieJar实例?

我有一个与机械化一起使用的CookieJar,我想添加一个cookie.我该怎么做呢?make_cookie()和set_cookie()对我来说不够清楚.

br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
Run Code Online (Sandbox Code Playgroud)

python cookies mechanize cookielib cookiejar

14
推荐指数
1
解决办法
2万
查看次数

Python请求lib,是request.ession相当于urllib2的开启者吗?

我需要在自己的项目中完成一个登录任务.幸运的是我发现有人已经完成了.
这是相关的代码.

import re,urllib,urllib2,cookielib

class Login():   
    cj = cookielib.LWPCookieJar()     
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))  

def __init__(self,name='',password='',domain=''):  
    self.name=name  
    self.password=password  
    self.domain=domain  
    urllib2.install_opener(self.opener)  

def login(self):  
    params = {'domain':self.domain,'email':self.name,'password':self.password}  
    req = urllib2.Request(  
        website_url,  
        urllib.urlencode(params)  
    )  

    self.openrate = self.opener.open(req)  

    print self.openrate.geturl()  
    info = self.openrate.read()  
Run Code Online (Sandbox Code Playgroud)

我已经测试了代码,它运行得很好(根据info).
现在我想将它移植到Python 3以及使用requestslib而不是urllib2.
我的想法:

  1. 既然原始代码使用opener,虽然不确定,我认为它的等价物requestsrequests.Session
  2. 我是否应该jar = cookiejar.CookieJar()在提出要求时通过?不确定.

我尝试过类似的东西

import requests
from http import cookiejar
from urllib.parse import urlencode

jar = cookiejar.CookieJar()
s = requests.Session()
s.post(  
    website_url,  
    data = urlencode(params),
    allow_redirects = …
Run Code Online (Sandbox Code Playgroud)

python urllib2 python-3.x python-requests

2
推荐指数
1
解决办法
2659
查看次数