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的keyword模块用法实例分析
Jun 30 Python
基于python实现微信模板消息
Dec 21 Python
Python实现新浪博客备份的方法
Apr 27 Python
python中函数默认值使用注意点详解
Jun 01 Python
Selenium元素的常用操作方法分析
Aug 10 Python
python将字符串转换成json的方法小结
Jul 09 Python
python中的列表与元组的使用
Aug 08 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
Python模块future用法原理详解
Jan 20 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Jupyter notebook 不自动弹出网页的解决方案
May 21 Python
详解Python flask的前后端交互
Mar 31 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实现读取和写入tab分割的文件
2015/06/01 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
Prototype Number对象 学习
2009/07/19 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
django fernet fields字段加密实践详解
2019/08/12 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
MYSQL基础面试题
2012/05/13 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
班队活动设计方案
2014/01/30 职场文书
综合实践教学反思
2014/01/31 职场文书
个人评语大全
2014/05/04 职场文书
科学发展观活动总结
2014/08/28 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
python turtle绘图
2022/05/04 Python