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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python分类时特征选择_关于python:是否有可用于分类数据输入的特征选择算法?...

我正在训练一个具有10个左右分类输入的神经网络。 在对这些分类输入进行一次热编码之后,我最终将大约500个输入馈入网络。我希望能够确定我每个分类输入的重要性。 Scikit-learn具有许多功能重要性算法,但是这些算法中的任何一种都可以应用于分类数据输入…

java隐含转化_java中自动转换和强制转换还有隐含转换

匿名用户1级2016-08-29 回答转型被用来将一个数值从一种类型转换到另一种类型。下面的程序连续使用了三个转型。那么它到底会打印出什么呢?public class Multicast{public static void main (String[] args){System.out.println((int)(char)(byte) -1);}}无论你怎样…

一个域名解析到另一个域名_注册域名公司|教你如何注册一个.net域名

近几年各后缀域名注册量都在增加,很多行业知道线上业务平台搭建的重要性,都优先制作网站布局线上,建站肯定需要域名,所以这也是带动域名注册量上涨原因之一。.COM、.NET域名一直是建站注册域名首选,.COM域名大家可能相…

java jedis connect timed out_Java连接Redis connection timed out 报错的解决方法

Java连接Redis connection timed out 报错的解决方法踩坑场景在使用 RedisTemplate 连接 Redis 进行操作的时候,发生了如下报错:报错信息如下:Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: /192.168.73.10:6…

python自动保存ping结果_利用python获取Ping结果示例代码

前言本文主要跟大家分享了关于利用python获取Ping结果的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧。示例代码:# -*- coding: utf-8 -*-import subprocessimport redef get_ping_result(ip_address):p…

富文本存储型XSS的模糊测试之道

富文本存储型XSS的模糊测试之道 凭借黑吧安全网漏洞报告平台的公开案例数据,我们足以管中窥豹,跨站脚本漏洞(Cross-site Script)仍是不少企业在业务安全风险排查和修复过程中需要对抗的“大敌”。 XSS可以粗分为反射型XSS和存储型…

java join()用法_四种联系(join)的区别及用法

链接:作为动词,它表示将两个或多个表的内容结合在一起并产生一个结果集,该结果集对每个表的列和行进行合并。表的联接一般都使用它们共有的数据。例如,您可以对有一个共同 pub_id 列的 titles 表和 publishers 表联接,…

python无效的类字符串_Python基础-字符串处理

​你好,我是goldsunC让我们一起进步吧!字符串操作与处理字符串是编程语言中经常会遇见的东西,而字符串又和那些编程语句什么的不太一样,我们可能需要对一个字符串进行各种各样的处理,后面我将给出我整理的一些常用的对…

phpstorm xdebug配置

phpstorm 8.0.3版本 1.本身自带xdebug插件 2.在xampp的php.ini中最后中添加(如果有[XDebug]配置替换) [XDebug]zend_extension "D:\Program Files\xampp\php\ext\php_xdebug.dll";xdebug.profiler_append 0;xdebug.profiler_enable 1;xdebu…

php xml 返回 微信,php版微信返回用户text输入的方法

本文实例讲述了php版微信返回用户text输入的方法。分享给大家供大家参考,具体如下:获得用户输入的内容,并发回相同内容//获取post数据// $PostData $HTTP_RAW_POST_DATA;$PostData file_get_contents("php://input");//判断POST是…

python加密敏感信息_仅需10行代码,使用python加密用户敏感数据

原标题:仅需10行代码,使用python加密用户敏感数据数据分析师必须要遵守的一个规则就是数据保密,但在跨部门沟通的时候,难免会有数据泄露的情况,所以,对于用户的姓名、手机号、地址等敏感信息,一…

springmvc+ztree v3实现类似表单回显功能

在做权限管理系统时,可能会用到插件zTree v3,这是一个功能丰富强大的前端插件,应用很广泛,如异步加载菜单制作、下拉选择、权限分配等。在集成SpringMVC中,我分别实现了zTree的添删改查,本节主要实现类似表单回显功能。…

php数组基础知识,PHP 数组基础知识小结

php函数有很多,需要时查询api。/*#数组 没有限制大小:$arr[0]1;$arr[1]2; $arrarray("0","1");$list($num1,$num2)$arr;array range(int low,int high[,int step])low最小数,high最高数,step步长int array_unshift(array…

python通过跳板机连接服务器_使用pycharm、跳板机连接内网服务器

使用pycharm、跳板机连接内网服务器接手实验室服务器后,大部分同学在GPU集群上跑程序都是直接在ssh界面上跑,这里想着通过pycharm通过跳板机来连接服务器。总体就是实验室服务器仅限内网访问,同时实验室也提供了一个跳板机,可以先…

C语言事实上不简单:sizeof

问&#xff1a;C语言中一共同拥有多少个keyword&#xff1f; 答&#xff1a;32个。 答不上来的没关系。非常正常。我们玩的是程序的艺术。而不是背数字。只是这个特殊的数字1<<5也是非常好记的-.-。 问&#xff1a;sizeof是函数还是keyword&#xff1f; 第一次看到这个问…

php的可变函数,php之可变函数的实例详解

php之可变函数的实例详解php的可变函数&#xff0c;今天大概的了解下&#xff0c;是看php手册总结的&#xff0c;觉得用处不大&#xff1b;PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号&#xff0c;PHP 将寻找与变量的值同名的函数&#xff0c;并且尝试执行它。可…

Android应用安全开发之浅谈网页打开APP

一、网页打开APP简介 Android有一个特性&#xff0c;可以通过点击网页内的某个链接打开APP&#xff0c;或者在其他APP中通过点击某个链接打开另外一个APP&#xff08;AppLink&#xff09;&#xff0c;一些用户量比较大的APP&#xff0c;已经通过发布其AppLink SDK&#xff0c;开…

python history文件_【python之路19】文件操作

一、打开文件文件句柄 open(文件路径, 模式)打开文件时&#xff0c;需要指定文件路径和以何等方式打开文件&#xff0c;打开后&#xff0c;即可获取该文件句柄&#xff0c;日后通过此文件句柄对该文件操作。打开文件的模式有&#xff1a;r &#xff0c;只读模式【默认】w&…

php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...

发布图片最多可添加9张作品发布wx.config({debug: false,appId: {$signPackage["appid"]},timestamp: {$signPackage["timestamp"]},nonceStr: {$signPackage["noncestr"]},signature: {$signPackage["signature"]},jsApiList: [// 所…

2、在控制台上输出1—100数字

public class Test {// 定义类 public static void main(String[] args) {// 主函数&#xff0c;程序的入口 for (int i 1; i < 100; i) { System.out.print(i " "); } }}转载于:htt…