1. 程式人生 > >python獲取伺服器響應cookie

python獲取伺服器響應cookie

總結

除錯網站獲取cookies時請檢視,r.header和r.request.header這兩個屬性,因為cookie說不準出現在他們倆誰裡面。

先貼一個程式碼

import re
import requests
from bs4 import BeautifulSoup
def printHeaders(headers):
    for h in headers:
        print(h+" : "+headers[h] + '\r\n')

def printCookies(cookies):
    for h in cookies:
        print(h+" : "
+cookies[h] + '\r\n') def loginFw(id,password): url = "http://xxxxx/login.asp" try: headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0', 'Host':'www.xxx.org', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
, 'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding':'gzip, deflate', 'Content-Type':'application/x-www-form-urlencoded', 'Referer':'http://xxx/login.asp', 'Connection':'keep-alive', } params = {"Reglname"
:id,"reglpassword":password} r = requests.post(url,data=params,headers=headers) printHeaders(r.request.headers) #伺服器返回的cookie需要用r.request裡的headers來獲取 printHeaders(r.headers) #這裡是獲取不到伺服器返回的cookie的 r.encoding = 'utf-8' return r.text except Exception as e: print("登陸錯誤:"+str(e)) ret = loginFw("[email protected]","xxx") #print(ret)

事情經過

 事情的發生是這樣的,今天我在除錯一個網站的模擬登陸,但是怎麼除錯都除錯不出來這個網站返回的cookie(因為我是用r.headers來獲取cookies的),後來我就在想是不是我的請求頭沒有設定正確,然後我就遍歷了r.request.headers,然後這個變數如實的列印了我的請求頭的資訊,但是我仔細一看cookie怎麼出現了變化,咦,這不就是我需要的響應cookie嗎!
 難道是我對r.request這個物件的理解出錯了嗎?以前我一直認為這個物件裡面儲存的是我請求發出去的資訊,現在怎麼會出現響應cookie呢?
 就在我百撕不得其解的時候,我去翻閱了requests庫的官方文件關於respond物件中包含的request的解釋,它上面寫著“The PreparedRequest object to which this is a response.”(表示看不到什麼意思,百度翻譯也翻譯不清楚),咦,好像是和響應有關啊,看來應該是我的理解出現了錯誤。

更好的解決方案

  那當然是用requests提供的"會話物件",他能夠自動的保留請求所獲取的引數。
  具體請跳轉傳送門:http://cn.python-requests.org/zh_CN/latest/user/advanced.html#request-and-response-objects

後來

  後來我發現原來是因為我在請求頭裡面寫了“Host”,“Referer”,導致Cookie出現異常的原因,所以以後不要隨便寫這兩個引數了,要寫就照著封包裡的寫。

相關推薦

python獲取伺服器響應cookie

總結 除錯網站獲取cookies時請檢視,r.header和r.request.header這兩個屬性,因為cookie說不準出現在他們倆誰裡面。 先貼一個程式碼 import

python獲取url響應

none n) 也不能 string pos amount 方法 時長 nbsp 前言 requests發請求時,接口的響應時間,也是我們需要關註的一個點,如果響應時間太長,也是不合理的。如果服務端沒及時響應,也不能一直等著,可以設置一個timeout超時的時間 關於req

python獲取token和cookie方法

 獲取token:token為介面引數返回值 # -*- coding: utf-8 -*- # @File : get_token.py # @API_name: # @Time : 2018/12/11 10:37 # @Author : guozhen.deng

java程式獲取伺服器響應報文

如果我們想得到當前主機與遠端主機是否連線,或者我們想做一個小型瀏覽器,我們需要使用socket寫一個請求報文。廢話少說,上程式碼。 public class Main { /** * @param args */ public static void main

使用Filter獲取伺服器響應內容(字串)

spring mvc架構的web應用中,spring框架將資料model渲染至jsp頁面並將最終結果輸出到客戶端,model和jsp模板可以由程式定義,但是頁面渲染及結果輸出過程是由spring封裝,對程式設計師來說是不可控的。想要取得輸出的內容有一種方法就是自定義ServletOutputStream物件

python獲取http響應

ont 如果 perror header port turn bsp set obj 一個相對完整的http請求,輸入ip和端口,輸出響應碼,響應頭,響應體,是否超時,以及出錯時的錯誤信息 處理包括: 1.協議處理,如果是443用https,其他用http 2.HTTPEr

Python Flask,cookie,設定、獲取、刪除cookie

  demo.py(設定、獲取、刪除cookie): # coding:utf-8 from flask import Flask, make_response, request app = Flask(__name__) # 設定cookie @app.route("/s

Python 3.6 利用psutil 獲取伺服器磁碟資訊

獲取磁碟完整資訊 [[email protected] python_auto]# vim disk.py !/usr/bin/env python import psutil disk = psutil.disk_partitions() #利用psu

python flask 伺服器端實現介面,post,get 方式,引數獲取方法

1、get 方式  引數located in path  eg.http://http://127.0.0.1:5000/researchReports/researchUsers/1111 #其中1111是要獲取的引數 獲取方式: @app.route('/resear

python獲取網站http://www.weather.com.cn 城市 8-15天天氣

status header none esp user lis [1] bad reat 參考一個前輩的代碼,修改了一個案例開始學習beautifulsoup做爬蟲獲取天氣信息,前輩獲取的是7日內天氣, 我看旁邊還有8-15日就模仿修改了下。其實其他都沒有變化,只變換了獲

Python獲取個人網站的所有課程下載鏈接和密碼,並保存到Mongodb中

one find() net agent play col pat 進行 jpg 1、獲取網站課程的分類地址; ‘‘‘ 爬取屌絲首頁,獲取每個分類名稱和鏈接 ‘‘‘ import requests from lxml import etree headers = {

python獲取系統基礎性能參數實現寫入文件

default python 後臺運行 action import psutil #!/usr/bin/env python # coding:utf-8 import psutil import time import sys from optparse import OptionP

[python]獲取網頁中內容為漢字的字符串的判斷

vsr rbo ats art htm acad for swe lin IPerf%E2%80%94%E2%80%94%E7%BD%91%E7%BB%9C%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D%E4%B

python-獲取操作系統信息

init eat ring n-2 compiler smp lob build strings #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: te

python-獲取本機mac地址

names iyu ddr repr pri int .get variant pac 1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 ############################ 4 #File N

python selenium-webdriver 通過cookie登陸(十一)

circle gin == items tail login lis code 技術 上節介紹了瀏覽器的常用方法,涉及到了cookie的使用,本節介紹一下如何利用cookie進行登陸系統,這裏使用到了request模塊,我們首先利用request模塊,請求登陸地址進行登陸,

python獲取PING結果

roc odi col def address bsp stdin -1 max 1 # -*- coding: utf-8 -*- 2 3 import subprocess 4 import re 5 6 def get_ping_result(ip_

Python獲取免費的可用代理

ren ont html function mod for pen parent script Python獲取免費的可用代理 在使用爬蟲多次爬取同一站點時,常常會被站點的ip反爬蟲機制給禁掉,這時就能夠通過使用代理來解決。眼下網上有非常多提供最新免費

python 獲取程序退出狀態碼

pythonimport systry: sys.exit(1)except SystemExit,e: print e1python 獲取程序退出狀態碼

利用python獲取nginx服務的ip以及流量統計信息

服務 open contex int bin line define pytho repeat #!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open