Pythoncookie處理
❶ python鐖鉶涔婥ookie妯℃嫙鐧誨綍--Cookie妯℃嫙鐧誨綍鍘熺悊
鍦ㄦ暟鎹鎶撳彇鐨勬棶紼嬩腑錛岄亣鍒伴渶瑕佺櫥褰曟墠鑳芥彮紺烘繁灞備俊鎮鐨勭綉絝欐椂錛孭ython鐖鉶鐨勫埄鍣⊿elenium灝辨樉寰楀挨涓洪噸瑕併傚敖綆″叾閫熷害鍙鑳界暐閫婁簬Requests錛屼絾Selenium鍦ㄦā鎷熺櫥褰曞悗鎸佺畫鎶撳彇鐨勪紭鍔垮湪浜庡叾鐏墊椿鎬с傜壒鍒鏄瀵逛簬澶ц勬ā鏁版嵁閲囬泦鎴栧歸熷害鏈夋瀬楂樿佹眰鐨勪換鍔★紝濡傛姠璐鏃訛紝Cookie妯℃嫙鐧誨綍鏇存槸寰楀績搴旀墜銆
娣卞叆鐞嗚ВCookie妯℃嫙鐧誨綍鐨勫師鐞嗭紝棣栧厛瑕佹槑鐧戒簲涓鍏抽敭姒傚康錛氬㈡埛絝涓庢湇鍔$鐨勪氦浜掋丠TTP鐨勬棤鐘舵佺壒鎬с丆ookie鐨勪綔鐢ㄣ丼ession鐨勫畾涔夛紝浠ュ強Cookie涓嶴ession涔嬮棿鐨勫叧緋匯
- 瀹㈡埛絝錛堢敤鎴鳳級涓庢湇鍔$錛堟湇鍔″櫒錛夋槸淇℃伅浜ゆ祦鐨勪袱絝錛屽傚悓嫻鋒磱涓鐨勭伅濉旓紝閫氳繃鏁版嵁浜や簰榪涜屾矡閫氥
- HTTP鐨勬棤鐘舵佺壒鎬т嬌寰楁瘡涓嬈¤鋒眰閮芥槸鐙絝嬬殑錛岃繖灝遍渶瑕丆ookie鏉ョ淮鎶ょ敤鎴風殑韜浠界姸鎬侊紝濡傚悓涓寮犻氳岃瘉錛岀『淇濆墠鍚庤鋒眰闂寸殑榪炶瘡鎬с
- Cookie鏄緗戠珯鍙戦佺粰鐢ㄦ埛鐨勬枃鏈鏂囦歡錛屽瓨鍌ㄧ潃鐢ㄦ埛鏍囪瘑淇℃伅錛屾槸瑙e喅HTTP鏃犵姸鎬侀棶棰樼殑瑙e喅鏂規堛
- Session鍒欐槸鏈嶅姟鍣ㄧ涓烘瘡涓鐢ㄦ埛浼氳瘽淇濈暀鐨勪竴緇勭浉鍏蟲暟鎹錛屽畠鏄鍦ㄦ湇鍔″櫒鍐呭瓨涓瀛樺偍鐨勶紝紜淇濈敤鎴峰湪嫻忚堣繃紼嬩腑鐨勮繛緇鎬с
鐧誨綍榪囩▼涓錛孋ookie璁板綍浜嗙敤鎴風殑鐧誨綍淇℃伅錛屾垜浠鍙浠ュ湪Python鐨凴equests搴撲腑鍒╃敤榪欎簺淇℃伅榪涜屽悗緇鐨勬姄鍙栥傛瘡嬈¤鋒眰鏃訛紝嫻忚堝櫒浼氳嚜鍔ㄦ惡甯Cookie錛屽傚悓闅忚韓鎼哄甫鐨勮韓浠借瘉鏄庛傚湪嫻忚堝櫒寮鍙戣呭伐鍏風殑Network鏍囩句笅錛屾垜浠鍙浠ユ竻鏅板湴鏌ョ湅璇鋒眰澶翠腑鐨凜ookie錛屼互鍙婂畠濡備綍浣撶幇鐢ㄦ埛鐨勮韓浠姐
Session涓嶤ookie鐨勫尯鍒鍦ㄤ簬錛屽墠鑰呮槸鏈嶅姟鍣ㄥ瓨鍌錛岃屽悗鑰呮槸嫻忚堝櫒鏈鍦板瓨鍌ㄣ傛竻闄Cookie閫氬父鎰忓懗鐫閫鍑虹綉絝欑櫥褰曠姸鎬併係ession鐨勯噸瑕佷綔鐢ㄥ湪浜庣淮鎶ょ敤鎴蜂細璇濈姸鎬侊紝紜淇濅俊鎮鐨勪竴鑷存у拰瀹夊叏鎬э紝灝ゅ叾鏄鍦ㄥ勭悊鏁忔劅鎿嶄綔鏃躲
Session鍦ㄦ湇鍔″櫒絝鐢熸垚涓涓鍞涓鐨凷ession ID錛屽苟閫氳繃Cookie浼犻掔粰瀹㈡埛絝錛岃繖鏍鋒瘡嬈¤鋒眰鏃訛紝瀹㈡埛絝鍙闇鎼哄甫榪欎釜ID錛屾湇鍔″櫒鍗沖彲璇嗗埆鐢ㄦ埛騫跺搷搴旂浉搴旀暟鎹銆備緥濡傦紝浣犲湪娣樺疂涓婅喘鐗╋紝緇忚繃鐧誨綍銆佽幏鍙朇ookie鍜孲ession ID錛屼箣鍚庣殑鎵鏈夋搷浣滐紝濡傛煡鐪嬭喘鐗╄濺錛屾湇鍔″櫒閮借兘閫氳繃Cookie涓鐨勪俊鎮榪涜屽搷搴斻
鐞嗚ВSession ID鐨勫姞瀵嗘満鍒訛紝鏄妯℃嫙鐧誨綍鐨勫叧閿姝ラゃ傛瘮濡傦紝褰撹塊棶娣樺疂鏃訛紝棣栧厛杈撳叆璐﹀彿鍜屽瘑鐮侊紝鏈嶅姟鍣ㄧ敓鎴愬苟瀛樺偍Cookie鍜孲ession錛岄殢鍚庡皢Cookie榪斿洖緇欏㈡埛絝錛岀敤鎴峰湪鍚庣畫鎿嶄綔涓鎼哄甫Cookie榪涜岄獙璇併傛瘡嬈¤塊棶鏃訛紝鏈嶅姟鍣ㄩ兘浼氶氳繃Cookie涓鐨凷ession ID榪借釜鐢ㄦ埛鐨勬搷浣溿
鎺屾彙榪欎簺鍘熺悊鍚庯紝浣犲氨鍙浠ュ紑濮嬬紪鍐橮ython鑴氭湰鏉ユā鎷熺櫥褰曞苟鎶撳彇鏁版嵁浜嗐傚傛灉浣犻渶瑕佹洿澶氱殑璧勬簮錛屽彲浠ラ氳繃娣誨姞寰淇″ソ鍙媓uaxz001錛屾垨鑰呭湪鐭ュ悕鐢靛晢騫沖彴濡備含涓溿佹窐瀹濄佸綋褰撲笂鎼滅儲鈥滅帇瀹囬煬鈥濊幏鍙栨洿澶氭寚瀵箋傛帹鑽愭繁鍏ュ︿範銆奝ython鐖鉶瀹炴垬銆嬶紙浣滆呯帇瀹囬煬絳夛級涓涔︼紝璇劇▼璧勬簮鍦ㄧ綉鏄撲簯鍜51CTO騫沖彴涓婁篃鑳芥壘鍒扮帇瀹囬煬鐨勮茶В銆
鐜板湪錛屼綘宸茬粡鍏峰囦簡Cookie妯℃嫙鐧誨綍鐨勫潥瀹炲熀紜錛屽噯澶囧ソ寮鍚浣犵殑鏁版嵁鎶撳彇涔嬫棶鍚э紒
❷ 關於用python寫的登陸程序,怎麼獲取cookie值並返回出來
兩種方式:
一、
介面,可以pip install requests模塊,安裝一個requests,對介面支持簡單好用
例子,寫一個getcookie()方法
import requests
def getcookie():
data={'username':username,'password':pwd}
session=requests.session()
loginurl="http://xxx.com/login"
#具體要介面登錄後才可以獲得cookies
result=session.post(loginurl,data=data)
cookies=requests.utils.dict_from_cookiejar(session.cookies)
return cookies
二、
UI自動化登錄:可以easy_install -U selenium,安裝selenium模塊,支持UI自動化,模擬前端,用戶名、密碼登錄後,這種方式也可以獲得cookie
一個例子,登錄csdn,並且獲取cookie,用戶名和密碼我隱去了,可以參考。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium
import os,time
import sys
sys.path.append("..")
import web
import datetime
#默認得安裝一個火狐瀏覽器
class webconn:
def __init__(self,drivertype):
self.drivertype=drivertype
def web_conn(self):
PASS=0
FAIL=0
get_cookie={}
t=datetime.datetime.now()
starttime=datetime.datetime.now()
driver = webdriver.Firefox()
try:
driver.get('https://passport.csdn.net/account/login')
time.sleep(2)
assert u'帳號登錄' in driver.title
driver.find_element_by_id("username").send_keys(u"yoursername")
print "輸入用戶名"
driver.find_element_by_id("password").send_keys(u"yourpassword")
print "輸入密碼"
driver.find_element_by_class_name("logging").click()
time.sleep(2)
assert u'全球最大中文' in driver.title
driver.add_cookie({'name':'key-aaaaaa','value':'value-bbbb'})
for cookie in driver.get_cookies():
print "%s -> %s" %(cookie['name'],cookie['value'])
get_cookie[cookie['name'].encode("UTF-8")]=cookie['value'].encode("UTF-8")
print "cookie cookie cookie cookie cookie"
print get_cookie
PASS=PASS+1
except Exception,e:
print(str(Exception)+":"+str(e))
FAIL=FAIL+1
finally:
driver.close()
driver.quit()
endtime=datetime.datetime.now()
totaltime=endtime-starttime
usetime=str(endtime-starttime)
hour=usetime.split(':').pop(0)
minute=usetime.split(':').pop(1)
second=usetime.split(':').pop(2)
totaltime=float(hour)*60*60+float(minute)*60+float(second)
totaltime=str(totaltime)+"s"
return get_cookie
❸ python獲取cookie後怎麼模擬登陸網站
運行平台:Windows
Python版本:Python3.x
IDE:Sublime text3
一、為什麼要使用Cookie
Cookie,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。
比如說有些網站需要登錄後才能訪問某個頁面,在登錄之前,你想抓取某個頁面內容,登陸前與登陸後是不同的,或者不允許的。
使用Cookie和使用代理IP一樣,也需要創建一個自己的opener。在HTTP包中,提供了cookiejar模塊,用於提供對Cookie的支持。
三、總結
獲取成功!如果看過之前的筆記內容,我想這些代碼應該很好理解吧。
❹ 淺析python中cookie寫入和讀取
通常情況下,一個請求對於cookie有不同的操作方式,如cookie寫入和cookie讀取2種最基本的方式友磨.
cookie的讀取
url = self.get_response_url()+"&callback=jQuery21008240514814031887_1508666806688&_=1508666806689"
cookie = requests.get(url).cookies
return cookie
這里好缺斗的cookie的讀取是通過url請求返回cookie得到cookiejar的值
cookie寫入
cookie = requests.utils.dict_from_cookiejar(self.get_cookie())
op_json = OperetionJson()
op_json.write_data(cookie)
這里的cookie的寫入是通過獲扮段取後,在cookiejar的dict中獲取到cookie,然後將cookie寫入到json中,即可實現cookie寫入的功能.
❺ 為什麼使用python的requests獲取到的cookie不能用於登錄
r1.cookies 是個容器,是一個object你直接傳相當傳object的str
正確的寫法是用get 取出來再傳 設置cookie
cookies = {'PHPSESSID':r1.cookies.get('PHPSESSID')}
r2 = requests.post(url, data=json.mps(payload), headers=headers,cookies=cookies)
print(r2.text)