Cookies與會話物件
第一次訪問頁面後,Server可將Cookie資訊加入HTTP Header返回給瀏覽器,瀏覽器會自動將這些資訊儲存在本地;
當再次訪問相同域名時,瀏覽器將對應Cookie資訊隨請求一起傳送,Server端可讀取這些資訊進行處理。
Cookie可設定過期時間,到期後由瀏覽器自動刪除;
當我們要返回頁面時,首先輸出如下:
- print "Content-type: text/plain\n"
print "Content-type: text/plain\n"
它其實是一個HTTP Header, 連續碰到兩個換行表示HTTP Header部分結束,剩餘部分將被做為資料處理;
包含了Cookie後輸出大致如下:
- print "Content-Type: text/html"
- print "Set-Cookie: session=12345"
- print # 多加一個換行表示HTTP Header部分結束
print "Content-Type: text/html"
print "Set-Cookie: session=12345"
print # 多加一個換行表示HTTP Header部分結束
程式碼:
setcookie.py
- #!/usr/bin/env python
- import Cookie
- import datetime
- import random
- expiration = datetime.datetime.now() + datetime.timedelta(days=30)
- cookie = Cookie.SimpleCookie()
- cookie["session"] = random.randint(0,1000000000)
- cookie["session"]["domain"] = "localhost"
- cookie["session"]["path"] = "/"
- cookie["session"]["expires"] = \
- expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")
- print "Content-type: text/plain"
- print cookie.output()
- print "Cookie set with: " + cookie.output()
#!/usr/bin/env python
import Cookie
import datetime
import random
expiration = datetime.datetime.now() + datetime.timedelta(days=30)
cookie = Cookie.SimpleCookie()
cookie["session"] = random.randint(0,1000000000)
cookie["session"]["domain"] = "localhost"
cookie["session"]["path"] = "/"
cookie["session"]["expires"] = \
expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")
print "Content-type: text/plain"
print cookie.output()
print
print "Cookie set with: " + cookie.output()
getcookie.py
- #!/usr/bin/env python
- import Cookie
- import os
- print "Content-type: text/plain\n"
- try:
- cookie = Cookie.SimpleCookie(os.environ["HTTP_COOKIE"])
- print "session = " + cookie["session"].value
- except (Cookie.CookieError, KeyError):
- print "session cookie not set!"
六、Cookies與會話物件
如果某個響應中包含一些Cookie,你可以快速訪問它們:
1
2
3
4
5
|
import
requests r
= requests.get( 'http://www.google.com.hk/' ) print (r.cookies[ 'NID' ]) print ( tuple (r.cookies)) |
要想傳送你的cookies到伺服器,可以使用 cookies 引數:
1
2
3
4
5
6
7
|
import
requests url
= 'http://httpbin.org/cookies' cookies
= { 'testCookies_1' :
'Hello_Python3' ,
'testCookies_2' :
'Hello_Requests' } # 在Cookie Version 0中規定空格、方括號、圓括號、等於號、逗號、雙引號、斜槓、問號、@,冒號,分號等特殊符號都不能作為Cookie的內容。 r
= requests.get(url, cookies = cookies) print (r.json()) |
會話物件讓你能夠跨請求保持某些引數,最方便的是在同一個Session例項發出的所有請求之間保持cookies,且這些都是自動處理的,甚是方便。
下面就來一個真正的例項,如下是快盤簽到指令碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import
requests headers
= { 'Accept' :
'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ,
'Accept-Encoding' :
'gzip, deflate, compress' ,
'Accept-Language' :
'en-us;q=0.5,en;q=0.3' ,
'Cache-Control' :
'max-age=0' ,
'Connection' :
'keep-alive' ,
'User-Agent' :
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' } s
= requests.Session() s.headers.update(headers) # s.auth = ('superuser', '123') s.get( 'https://www.kuaipan.cn/account_login.htm' ) _URL
= 'http://www.kuaipan.cn/index.php' s.post(_URL, params = { 'ac' : 'account' ,
'op' : 'login' },
data = { 'username' : '****@foxmail.com' ,
'userpwd' : '********' ,
'isajax' : 'yes' }) r
= s.get(_URL, params = { 'ac' : 'zone' ,
'op' : 'taskdetail' }) print (r.json()) s.get(_URL, params = { 'ac' : 'common' ,
'op' : 'usersign' }) |
相關文章
- Python爬蟲進階之會話和CookiesPython爬蟲會話Cookie
- 會話及物件查詢會話物件
- PowerBuilder 郵件會話物件MailSessionUI會話物件AISession
- mysql鎖與會話MySql會話
- Cobaltstrike與MSF會話派生會話
- Android: HttpClient與Webview共享cookiesAndroidHTTPclientWebViewCookie
- CookiesCookie
- Response.cookies和Request.cookiesCookie
- 令牌Token和會話Session原理與攻略會話Session
- MQTT 持久會話與 Clean Session 詳解MQQT會話Session
- Session會話與Cookie簡單說明Session會話Cookie
- 小議服務程式與會話(一)會話
- 小議服務程式與會話(二)會話
- 小議服務程式與會話(三)會話
- 深入學習History物件管理瀏覽器會話歷史物件瀏覽器會話
- Cookies & SessionCookieSession
- Windows下大量SYSMAN會話超出會話限制Windows會話
- 殺會話之查詢鎖表的物件及相關操作會話物件
- 分析依賴物件對當前失敗會話的影響物件會話
- 會話管理會話
- Session會話Session會話
- Sqlserver定位哪些物件和哪些會話哪些sql語句消耗了tempdbSQLServer物件會話
- 進入與退出應用 / 會話重用與自動登入會話
- MQTT-會話MQQT會話
- Oracle 會話(Session)Oracle會話Session
- oracle鎖會話Oracle會話
- 從零搭建一個IdentityServer——會話管理與登出IDEServer會話
- 會話與事務級臨時表和dual表會話
- SQLAlchemy - 資料庫的連線、建立會話與模型SQL資料庫會話模型
- 多域名共享 cookiesCookie
- Sanic Cookies 讀寫Cookie
- Another Intro for CookiesCookie
- TensorFlow學習之會話Sesstion()和互動會話InterativeSesstion()會話
- securecrt保持會話不會斷掉Securecrt會話
- Cassandra的Session會話Session會話
- ?ORACLE會話超時Oracle會話
- nginx黏滯會話Nginx會話
- 保持會話連線會話