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 21 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
python中zip和unzip数据的方法
May 27 Python
Python中的with...as用法介绍
May 28 Python
用python处理MS Word的实例讲解
May 08 Python
使用django-guardian实现django-admin的行级权限控制的方法
Oct 30 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
对python 调用类属性的方法详解
Jul 02 Python
python 自定义装饰器实例详解
Jul 20 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
Django封装交互接口代码
Jul 12 Python
python 线程的五个状态
Sep 22 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删除HTMl标签的实现代码
2013/06/30 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php实现求相对时间函数
2015/06/15 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
python 循环遍历字典元素的简单方法
2016/09/11 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
公司财务总监岗位职责
2013/12/14 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
办公室主任岗位职责
2015/01/31 职场文书