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获取本机mac地址和ip地址的方法
Apr 29 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
python中的turtle库函数简单使用教程
Jul 23 Python
python3.5安装python3-tk详解
Apr 26 Python
Python更新所有已安装包的操作
Feb 13 Python
浅谈Python numpy创建空数组的问题
May 25 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
JQuery 写的个性导航菜单
2009/12/24 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python随机取list中的元素方法
2018/04/08 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
python实现五子棋小游戏
2020/03/25 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python中p-value的实现方式
2019/12/16 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
解决方案设计综合面试题
2015/08/31 面试题
大学生求职自我评价
2014/01/16 职场文书
高中体育教学反思
2014/01/29 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
小学教师岗位职责
2015/04/02 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
建房合同协议书
2016/03/21 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript