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返回真假值(True or False)小技巧
Apr 10 Python
Python正则表达式完全指南
May 25 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
python技能之数据导出excel的实例代码
Aug 11 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
解决python删除文件的权限错误问题
Apr 24 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
Python 旋转打印各种矩形的方法
Jul 09 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
Apr 01 Python
使用anaconda安装pytorch的实现步骤
Sep 03 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
德劲1103二次变频版的打磨
2021/03/02 无线电
将PHP作为Shell脚本语言使用
2006/10/09 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
brook javascript框架介绍
2011/10/10 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
应届生污水处理求职信
2013/11/06 职场文书
物业电工岗位职责
2013/11/20 职场文书
高一自我鉴定
2013/12/17 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
租房协议书
2014/04/10 职场文书
银行催款通知书
2015/04/17 职场文书
离婚协议书范文2016
2016/03/18 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫