日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python+selenium获取cookie session_Python Selenium模拟登录成功后,使用此cookie、利用requests库进行get时,提示“非法登陆”。...

發布時間:2025/3/15 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python+selenium获取cookie session_Python Selenium模拟登录成功后,使用此cookie、利用requests库进行get时,提示“非法登陆”。... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 步驟概述

a. 模擬登錄學校選課系統(使用Selenium庫登陸http://xk.suibe.edu.cn/xsxk/login.xk)

b. 取得cookie后傳入requests的session中。(參考博客:https://blog.csdn.net/big__v/article/details/78151940)

c. 使用requests庫中的post提交選課序號至http://xk.suibe.edu.cn/xsxk/xkOper.xk

d. 完成選課

二. 手動登錄時瀏覽器截圖(Chrmoe)

1. 登錄時request headers(這里有一個cookie就是之后會出錯的地方。)

2. 登錄時post

三. 出錯情況概述

1. 如果手動用瀏覽器登錄并復制上述cookie直接進入get的headers里,get命令能夠成功完成,并提示選課成功。

2. 如果把手動用瀏覽器登錄這一步用Selenium模擬登錄代替,并直接將cookies傳入requests的session中,再次嘗試gett就會報出“非法進入”。

四. 問題排除

1. 第二步get推測沒有問題,因為復制瀏覽器中cookie直接進入get的headers里,post命令能夠成功完成。

2. 不是cookie格式問題,因為格式問題會導致報錯“登錄過期”,而不是“非法登錄”。

五. 問題猜測

猜測可能cookie進行過加密

猜測存在其他反爬蟲手段

猜測cookie存在時效性

六. 完整代碼如下

# -*- coding:utf-8 -*-

from selenium import webdriver

import requests

from selenium.webdriver.support.wait import WebDriverWait

# 添加選課序號

codes = []

while True:

code = raw_input(u'請輸入選課序號(輸入回車結束):')

if code != '':

codes.append(code)

else:

break

# 開始登錄

driver = webdriver.Chrome()

url = "http://xk.suibe.edu.cn/xsxk/login.xk"

s = requests.session()

while True:

driver.get(url)

name_input = driver.find_element_by_id('username') # 找到用戶名的框框

pass_input = driver.find_element_by_id('password') # 找到輸入密碼的框框

login_button = driver.find_element_by_xpath('//*[@id="loginForm"]/table/tbody/tr[4]/td[2]/input[1]')

name_input.clear()

name_input.send_keys('1*******') # 填寫用戶名

pass_input.clear()

pass_input.send_keys('********') # 填寫密碼

WebDriverWait(driver, 300000000).until_not(lambda x: x.find_element_by_id("verifyCode").is_displayed()) # 等待直到登錄成功

if u'夜大學' in driver.page_source:

print u"登錄成功!"

selenium_cookies = driver.get_cookies() # 把selenium獲取的cookies保存到變量,備用。

# print(selenium_cookies)

driver.close()

break

else:

driver.close()

# 處理cookie

s = requests.Session()

for i in selenium_cookies:

requests.utils.add_dict_to_cookiejar(s.cookies, {i['name']: i['value']})

# 以下用post提交選課

for code in codes:

info = {'method': 'handleQxgxk',

'jxbid': '201820191' + code,

'glJxbid': '',

'xyjc': ''}

r = s.get('http://xk.suibe.edu.cn/xsxk/xkOper.xk', params=info)

if 'false' in r.text:

print '選課序號:%s,選課失敗。' % code, r.text

else:

print '選課序號:%s,選課成功。' % code

總結

以上是生活随笔為你收集整理的python+selenium获取cookie session_Python Selenium模拟登录成功后,使用此cookie、利用requests库进行get时,提示“非法登陆”。...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。