當前位置:首頁 » 編程語言 » python設置cookie

python設置cookie

發布時間: 2024-07-28 09:11:23

『壹』 python非同步中aiohttp獲取不到正確的Set-cookies值

python非同步中aiohttp獲取不到正確的Set-cookies值


這幾天學習了python的非同步請求,想修改之前寫的代碼提高請求效率,但遇到一個包含set-cookie返回的請求無法獲取正確的cookie值

原程序關鍵代碼(單線程)(重點看print()輸出內容):

def enter_study(num, course): # 進入每個課群的每個課程記錄每個章節url
global lesson_url # 章節
header['Referer'] = re.search(r'http.*?course', qun_course_url[num][course]).group() + 's'
print(session.cookies) # 列印當前網站的cookies
print(' ')
while True:
try:
request = session.get(qun_course_url[num][course], headers=header, timeout=3) # 進入課程
print(request.cookies)
print(session.cookies) # 列印當前網站的cookies
input()
break
except Exception as e:
print('進入課程學習重試中。。。')
continue
update_time(1)
update_time(2)
temp_list = []
for x in re.findall(r'/courses/YOOCS*/">', request.text):
temp_list.append('https://xueyuan.yooc.me' + x[:-2]) # 該課程有多少章節
lesson_url[num][course] = temp_

運行結果(cookies中間空白處因為涉及用戶信息所以屏蔽了):

修改後的出現問題的代碼(非同步)(重點看print()輸出內容):

async def enter_study(num, course, header): # 進入每個課群的每個課程記錄每個章節url
async with aiohttp.ClientSession(cookies=cookie) as session:
header['Referer'] = re.search(r'http.*?course', qun_data[num][2][course]).group() + 's'
#列印請求前的cookie記錄
print(session.cookie_jar.filter_cookies())
async with session.get(qun_data[num][2][course], headers=header) as html: # 進入課程
update_time(1)
update_time(2)
print(' ')
print(html.cookies)#列印Set-cookie信息
print()
#列印請求後的cookie記錄
print(print(session.cookie_jar.filter_cookies()))
if str(html.cookies).find('Set-Cookie') > -1:
save_cookie_record['Set-Cookie'] = html.cookies
rep_text = await html.text(encoding='utf-8')
temp_list = []
for x in re.findall(r'/courses/YOOCS*/">', rep_text):
temp_list.append('https://xueyuan.yooc.me' + x[:-2]) # 該課程有多少章節
qun_data[num][2][course] = temp_

運行結果(請求後返回的set-cookies信息沒有更新):
該程序是用一個cookie字典來保存cookie值的,需要通過請求後的set-cookie值來更新我的cookie字典,為什麼用在非同步請求上卻不行呢?

『貳』 python獲取cookie後怎麼模擬登陸網站

運行平台:Windows

Python版本:Python3.x

IDE:Sublime text3

一、為什麼要使用Cookie

Cookie,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。
比如說有些網站需要登錄後才能訪問某個頁面,在登錄之前,你想抓取某個頁面內容,登陸前與登陸後是不同的,或者不允許的。
使用Cookie和使用代理IP一樣,也需要創建一個自己的opener。在HTTP包中,提供了cookiejar模塊,用於提供對Cookie的支持。

三、總結

獲取成功!如果看過之前的筆記內容,我想這些代碼應該很好理解吧。

『叄』 python測試介面時需要登錄怎麼解決

有些網頁需要你登錄之後才可以訪問,你需要提供賬戶和密碼。

只要在發送http請求時,帶上含有正常登陸的cookie就可以了。

1.首先我們要先了解cookie的工作原理。

Cookie是由伺服器端生成,發送給User-Agent(一般是瀏喚皮覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給伺服器(前提是瀏覽器設置為啟用cookie)。Cookie名稱和值可以由伺服器端開發自己定義,對於JSP而言也可以直接寫入jsessionid,這樣伺服器可以知道該用戶是否合法用戶以及是否需要重新登錄等。

2.之後我們要獲取和塵差到用戶正常登錄的cookie.

python提供了cookieJar的庫,只要兄拍把cookieJar的實例作為參數傳到urllib2的一個opener裡面。

然後訪問一次登錄的頁面,cookie就已經保存下來了。之後通過這個實例訪問所有的頁面都帶有正常登陸的cookie了。

以人人網為例子。

Python代碼

  • #encoding=utf-8

  • importurllib2

  • importurllib

  • importcookielib

  • defrenrenBrower(url,user,password):

  • #登陸頁面,可以通過抓包工具分析獲得,如fiddler,wireshark

  • login_page="hLogin.do"

  • try:

  • #獲得一個cookieJar實例

  • cj=cookielib.CookieJar()

  • #cookieJar作為參數,獲得一個opener的實例

  • opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

  • #偽裝成一個正常的瀏覽器,避免有些web伺服器拒絕訪問。

  • opener.addheaders=[('User-agent','Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1)')]

  • #生成Post數據,含有登陸用戶名密碼。

  • data=urllib.urlencode({"email":user,"password":password})

  • #以post的方法訪問登陸頁面,訪問之後cookieJar會自定保存cookie

  • opener.open(login_page,data)

  • #以帶cookie的方式訪問頁面

  • op=opener.open(url)

  • #讀取頁面源碼

  • data=op.read()

  • returndata

  • exceptException,e:

  • printstr(e)

  • #訪問某用戶的個人主頁,其實這已經實現了人人網的簽到功能。

  • printrenrenBrower("httm/home","用戶名","密碼")

熱點內容
交換機怎麼復制配置文件 發布:2024-11-26 01:51:47 瀏覽:489
輸編程 發布:2024-11-26 01:51:05 瀏覽:724
推薦類的演算法 發布:2024-11-26 01:50:22 瀏覽:917
怎麼製作ftp軟體 發布:2024-11-26 01:45:41 瀏覽:567
演算法m是誰 發布:2024-11-26 01:40:35 瀏覽:44
h1z1文件夾安裝 發布:2024-11-26 01:40:28 瀏覽:23
電話加密 發布:2024-11-26 01:39:09 瀏覽:28
hotspot源碼 發布:2024-11-26 01:33:05 瀏覽:282
日本電報密碼是多少 發布:2024-11-26 01:33:00 瀏覽:441
雷電緩存目錄 發布:2024-11-26 01:30:05 瀏覽:951