【问题标题】:How can i add cookie in headers?如何在标题中添加 cookie?
【发布时间】:2018-02-27 02:27:03
【问题描述】:

我想使用 api 自动化测试工具。 首先,我登录网站并获取一个 cookie。

我的代码是python3

import urllib
import urllib3
from bs4 import BeautifulSoup
url ='http://ip:port/api/login'
login_req = urllib.parse.urlencode(login_form)
http = urllib3.PoolManager()
r= http.request('POST',url,fields={'userName':'id','password':'passoword'})
soup = BeautifulSoup(r.data.decode('utf-8'),'lxml')
cookie = r.getheaders().get('Set-Cookie')
str1 = r.getheaders().get('Set-Cookie')
str2 = 'JSESSIONID' +str1.split('JSESSIONID')[1]
str2 = str2[0:-2]
print(str2)
 -- JSESSIONID=df0010cf-1273-4add-9158-70d817a182f7; Path=/; HttpOnly

然后,我在另一个网站 api 上添加了 cookie。 但它不起作用!

url2 = 'http://ip:port/api/notebook/job/paragraph'
r2 = http.request('POST',url2)
r2.headers['Set-Cookie']=str2
r2.headers['Cookie']=str2
http.request('POST',url2, headers=r2.headers)

为什么不工作?它显示了另一个 cookie 如果您知道这种情况,请向我解释.. 错误内容就是这样。

HTTP ERROR 500
Problem accessing /api/login;JSESSIONID=b8f6d236-494b-4646-8723-ccd0d7ef832f. 
Reason: Server Error
Caused by:</h3><pre>javax.servlet.ServletException: Filtered request failed. 
ProtocolError: ('Connection aborted.', BadStatusLine('<html>\n',))

非常感谢!

【问题讨论】:

  • 通常以5开头的错误代码是由于网站问题而引发的。如果您收到HTTP ERROR 500,我认为您的代码没有任何问题。参考:en.wikipedia.org/wiki/List_of_HTTP_status_codes
  • @KeyurPotdar 谢谢..我找到了另一个解决方案!

标签: python python-3.x curl python-requests


【解决方案1】:

在 python 3.x 中使用 requests 模块。您必须创建一个您现在没有做的会话,这就是您面临问题的原因。

import requests
s=requests.Session()
url ='http://ip:port/api/login'
r=s.get(url)
dct=s.cookies.get_dict() #it will return cookies(if any) and save it in dict

获取服务器想要的任何 cookie 以及请求的所有标头并将其传递到标头中

jid=dct["JSESSIONID"]
head = {JSESSIONID="+jid,.....}
payload = {'userName':'id','password':'passoword'}
r = s.post(url, data=payload,headers=head)
r = s.get('whatever url after login')

要获取有关您必须传递哪些特定标头以及 POST 所需的所有参数的信息

    在谷歌浏览器中打开链接。
    打开开发者控制台(fn + F12)。
    在那里搜索登录文档(如果找不到,输入错误的详细信息并提交)。
    您将获得有关请求标头和 POST 参数的信息。

【讨论】:

  • 我尝试这样做.. 但最后一个 r 不起作用..kkkk...响应[500] 错误
  • 登录没问题,我在标题中添加了一个 jsession 很好。但最后一个帖子 api 不起作用
  • 你能给我你要发帖的链接吗?
  • 网站是我合作的网站..所以我不给..对不起
  • 好的,没问题,但通常这段代码可以正常工作,您可以使用它登录任何网站
猜你喜欢
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多