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 25 Python
跟老齐学Python之for循环语句
Oct 02 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python 正则表达式的高级用法
Dec 04 Python
python人民币小写转大写辅助工具
Jun 20 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
wxPython色环电阻计算器
Nov 18 Python
Python3监控疫情的完整代码
Feb 20 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/06/05 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
Python多线程学习资料
2012/12/19 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python实现自动打卡的示例代码
2020/10/10 Python
消防宣传语大全
2015/07/13 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python