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中urllib模块用法实例详解
Nov 19 Python
详解Python3中的Sequence type的使用
Aug 01 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
浅析python标准库中的glob
Mar 13 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python属于软件吗
Jun 18 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
浅析Python requests 模块
Oct 09 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
Django中celery的使用项目实例
Jul 07 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
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
PHP获取文件行数的方法
2015/06/10 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
学习ExtJS accordion布局
2009/10/08 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
js数组操作常用方法
2014/05/08 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
vue之延时刷新实例
2019/11/14 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
浅谈Python中的私有变量
2018/02/28 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
python中实现控制小数点位数的方法
2019/01/24 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
python re模块和正则表达式
2021/03/24 Python
六查六看六改心得体会
2014/10/14 职场文书
事业单位个人总结
2015/02/12 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python