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递归查询菜单并转换成json实例
Mar 27 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
python交互式图形编程实例(三)
Nov 17 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
python正则中最短匹配实现代码
Jan 16 Python
Django中的ajax请求
Oct 19 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Python持续监听文件变化代码实例
Jul 22 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
php 获取可变函数参数的函数
2009/08/26 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
总结4个方面优化Vue项目
2019/02/11 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
查看Django和flask版本的方法
2018/05/14 Python
Python requests库用法实例详解
2018/08/14 Python
python实现电子词典
2020/03/03 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
如何写出好的Java代码
2014/04/25 面试题
毕业生精彩的自我评价分享
2013/10/06 职场文书
一名女生的自荐信
2013/12/08 职场文书
18岁生日感言
2014/01/12 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
借钱欠条怎么写
2015/07/03 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Java基于字符界面的简易收银台
2021/06/26 Java/Android