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 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
Python对象与引用的介绍
Jan 24 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
python sorted函数原理解析及练习
Feb 10 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
Python socket如何解析HTTP请求内容
Feb 12 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 获取全局变量的代码
2011/04/21 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JavaScript错误处理
2015/02/03 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python自定义异常实例详解
2017/07/11 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
python字典的遍历3种方法详解
2019/08/10 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
浅析python中的del用法
2020/09/02 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
无传销社区工作方案
2014/05/13 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js