python爬虫_实现校园网自动重连脚本的教程


Posted in Python onApril 22, 2018

一、背景

最近学校校园网不知道是什么情况,总出现掉线的情况。每次掉线都需要我手动打开web浏览器重新进行账号密码输入,重新进行登录。系统的问题我没办法解决,但是可以写一个简单的python脚本用于自动登录校园网。每次掉线后,再打开任意网页就是这个页面。

python爬虫_实现校园网自动重连脚本的教程

二、实现代码

#-*- coding:utf-8 -*-
__author__ = 'pf'
import time
import requests
class Login:
 #初始化
 def __init__(self):
  #检测间隔时间,单位为秒
  self.every = 10
 #模拟登录
 def login(self):
  print self.getCurrentTime(), u"拼命连网中..."
  url="http://222.24.19.190:8080/portal/pws?t=li"
  #消息头
  headers={
  'Host':"222.24.19.190:8080",
  'User-Agent':"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0",
  'Accept':"application/json, text/javascript, */*; q=0.01",
  'Accept-Language':"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
  'Accept-Encoding':"gzip, deflate",
  'Referer':"http://222.24.19.190:8080/portal/index_default.jsp",
  'Content-Type':"application/x-www-form-urlencoded",
  'X-Requested-With':"XMLHttpRequest",
  'Content-Length':"291",
  'Connection':"close"
  }
  #提交的信息
  payload={
  'userName':'1403810041',
  'userPwd':'MTk4NDEy',
  'userurl':'http%3A%2F%2Fwww.msn.com%3Focid%3Dwispr&userip=222.24.52.200',
  'portalProxyIP':'222.24.19.190',
  'portalProxyPort':'50200',
  'dcPwdNeedEncrypt':'1',
  'assignIpType':'0',
  'appRootUrl':'=http%3A%2F%2F222.24.19.190%3A8080%2Fportal%2F',
  'manualUrlEncryptKey':'rTCZGLy2wJkfobFEj0JF8A%3D%3D'
  }
  try:
   r=requests.post(url,headers=headers,data=payload)
   print self.getCurrentTime(),u'连上了...现在开始看连接是否正常'
  except:
   print("error")
 #判断当前是否可以连网
 def canConnect(self):
  try:
   q=requests.get("http://www.baidu.com")
   if(q.status_code==200):
    return True
   else:
    return False
  except:
   print 'error'
 #获取当前时间
 def getCurrentTime(self):
  return time.strftime('[%Y-%m-%d %H:%M:%S]',time.localtime(time.time()))
 #主函数
 def main(self):
  print self.getCurrentTime(), u"Hi,欢迎使用自动登陆系统"
  while True:
   self.login()
   while True:
    can_connect = self.canConnect()
    if not can_connect:
     print self.getCurrentTime(),u"断网了..."
     self.login()
    else:
     print self.getCurrentTime(), u"一切正常..."
    time.sleep(self.every)
   time.sleep(self.every)
login = Login()
login.main()

三、解决步骤

首先需要一个用于抓包的工具。我们要抓取提交的数据以及提交到的url地址。我这里用的是firefox浏览器的httpfox插件。

python爬虫_实现校园网自动重连脚本的教程

用firefox浏览器打开登录页面,并且打开httpfox插件。在页面中输入账户名和密码点击上线后,注意一下httpfox中有一行记录的Method是POST。我们需要记录的就是其中的POST Data中的userName和userPwd。以及Headers中的数据。还有POST到的URL地址。

如图:

python爬虫_实现校园网自动重连脚本的教程

python爬虫_实现校园网自动重连脚本的教程

我这里使用了python中的requests库。

将获取到的URL地址、userName、userPwd、Headers填入代码中对应的位置。

python爬虫_实现校园网自动重连脚本的教程

可以直接运行python程序,如图:

python爬虫_实现校园网自动重连脚本的教程

或者可以用pyinstaller库生成exe文件再运行,如图:

python爬虫_实现校园网自动重连脚本的教程

python爬虫_实现校园网自动重连脚本的教程

四、总结

我这里设置了一个死循环,让程序每隔10s检测一下是否能连上网,若可以连上则输出“一切正常”然后接着循环,若不能连上,则输出“断网了”然后重新连网。我们可以对程序设置开机自启动。这样,开机也就不需要再手动去连网了。

以上这篇python爬虫_实现校园网自动重连脚本的教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中设置变量访问权限的方法
Apr 27 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
Django csrf 验证问题的实现
Oct 09 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
python scipy卷积运算的实现方法
Sep 16 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
python中怎么表示空值
Jun 19 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
pytorch中的numel函数用法说明
May 13 Python
selenium+python实现自动登录脚本
Apr 22 #Python
python实现校园网自动登录的示例讲解
Apr 22 #Python
用Python写一段用户登录的程序代码
Apr 22 #Python
python实现简单登陆流程的方法
Apr 22 #Python
Python 实现选择排序的算法步骤
Apr 22 #Python
python学习基础之循环import及import过程
Apr 22 #Python
Python中循环引用(import)失败的解决方法
Apr 22 #Python
You might like
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php中stdClass的用法分析
2015/02/27 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
用javascript操作xml
2006/11/04 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
webpack之devtool详解
2018/02/10 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
检讨书1000字
2014/10/11 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
2015年教师节慰问信
2015/03/23 职场文书
创卫工作总结2015
2015/04/22 职场文书
学风建设主题班会
2015/08/17 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
python实现简单石头剪刀布游戏
2021/10/24 Python