手把手教你python实现校园网自动连接,零基础也可以轻松实现

您所在的位置:网站首页 篮球运动的说说简短语句英语 手把手教你python实现校园网自动连接,零基础也可以轻松实现

手把手教你python实现校园网自动连接,零基础也可以轻松实现

#手把手教你python实现校园网自动连接,零基础也可以轻松实现| 来源: 网络整理| 查看: 265

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、准备工具

二、具体步骤

1.创建项目和安装request库

        a.创建项目

        b.安装request库

2.编写程序

        a.最简单的get_link.py程序,没有多余的东西

        b.更完善的程序

3.打包    

前言

        每次手动连接校园网真的太麻烦了,而且有时候即使连上了校园网,登录窗口也不一定弹出来,就想着学着弄一个自动连接校园网的小程序,写这篇文章一方面是想着记录自己的成长,一方面是最初自己尝试去写这个的时候真的找了好多资料,作为一个只学过python的小白着实有点云里雾里,毕竟网络这一块懂得太少了,所以这篇文章可能也有很多不足,希望谅解,这篇文章希望可以帮助同样只学过PYTHON的小白去尝试动手做一个能够连接自己学校校园网的python程序。我们学校的校园网连接用的是post请求。

一、准备工具

1.一个python开发工具,我用的是pycharm,这个我就不做具体介绍了

2. 在pycharm安装request库

3.python打包程序,我用的是pyinstaller,打包后就是一个exe文件方便直接双击运行和到没有python环境的电脑中运行,意思是你写好之后这个学校其他同学都能用。

二、具体步骤 1.创建项目和安装request库         a.创建项目

  创建项目就不多说了,这里放两张图片,项目名称和路径都用自己喜欢的。

        b.安装request库

        安装requests库的话也很简单,这里我们通过终端来安装,创建一个新的项目后会打开一个窗口,在最下面一栏找到Terminal(中文版的应该叫终端),点击后终端就会出现在项目窗口的下方。在终端中输入 pip install requests然后按回车(pip 一般是装了python和pycharm后会自带的,如果报错说没有pip这个命令就百度一下吧)。

         回车后应该会出现下载进度条,就像这样。

         如果下载比较慢的话换清华的源试试,CTRL + C结束下载,然后重新输入pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple(直接复制过去就行)

        等待一段时间后会提示安装成功,就像这样

         值得一提的是这里可能会有朋友跟我一样出现这行黄色的WARNING,其实没什么大问题,这里是说pip的版本太低了,他要我们更新,不更在这个项目里问题也不大,只要出现successfully基本上就是安装成功了。

2.编写程序

        我这里总共弄了两个py程序,项目结构如下:

        a.最简单的get_link.py程序,没有多余的东西

        别看我上面那个项目结构弄了四个玩意,其实只需要一个py脚本就可以了,下面是示例代码。

import requests # 校园网地址 post_addr = "http://" #下面两个大括号里面都是复制自己学校校园网登录网站中的,冒号两边都要加上双引号 post_header = { 'Accept':'*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Length': '120', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Host': '000.00.0.00', 'Origin': 'http://000.00.0.00', 'Pragma': 'no-cache', 'Referer': 'http://000.00.0.00', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44', 'X-Requested-With': 'XMLHttpRequest', } post_data = { 'action': 'login', 'username': username, 'password': password, 'ac_id': '1', 'user_ip': 000.00.000.000, 'save_me': '0', 'ajax': '1', } z = requests.post(post_addr, data=post_data, headers=post_header) #如果不想每次都手动关闭窗口可以删除下面的input,然后将print里的内容改成自己想要的 print("连接成功,按任意键以退出") input("")

        重要的代码其实就这几行

import requests # 校园网地址 post_addr = "http://" post_header = { 这里是一个要从浏览器复制的 这一部分是请求头,也就是告诉服务器我们是个啥,用的什么浏览器,一些信息在这里 } post_data = { 这里是第二个要从浏览器复制的 这一部分是要交给服务器的信息 } z = requests.post(post_addr, data=post_data, headers=post_header)

        将上述一段复制到pycharm新建的脚本里(也就是get_link.py文件,get_link可以换成自己喜欢的),然后连上校园网,打开登录网站,正常的输入账号密码。 

        然后按F12打开开发者页面,会出现这样类似的界面。

        

        然后如图找到 Network这个选项,然后点击登录,请求列表中就会出现一个新的请求。

        然后点击一个请求就可以看到请求的内容。

         图中红色框框里的内容就是要复制到脚本中的第一部分的东西,直接复制过去后记得调一下格式,然后冒号两边的文字都要打上双引号,可以参考我上面发的代码,另外我那里删了几行,好像是没有什么影响的,比如很长的那一段Cookie。

        接下来我们要找的发送给服务器的数据,也就是账号密码和ip地址,这个可能在不一样的位置,有可能在上面那个图那里往下翻就能翻到,有些可能在Payload里,像我这里就是。

         总之无论在哪,只要上面这张图红色框框里的内容就可以了,复制到上面代码第二个大括号给里就行,同样记得给冒号两边的内容打上双引号。

        这样基本上就可以了,在Pycharm里面右键运行试试。

        b.更完善的程序

         经过测试后我发现这个程序有时候可以用有时候不可以用,研究后发现原来在学校不同地方(比如宿舍,教室,图书馆)连接校园网我的ip都是不一样的,就是连接wifi后属性里的IPv4地址。

         这样就需要每次手动在脚本中更新ip地址才能使用,但那样子完全违背了我写这个东西的初衷,于是我在网上找到了获取ip的代码,并将ip写入了记事本中,这个就是get_ip.py。这样每次连接之前都能自动获取IP并将其写入记事本文件ip.txt中。

        get_ip.py

import socket def get_host_ip(): """ 查询本机ip地址 :return: ip """ try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] finally: s.close() return ip if __name__ == '__main__': doc = open('ip.txt','w') print(get_host_ip(),file=doc) doc.close()

        然后再完善一下上面发出来的代码,比如将账号密码写在passport.txt这个记事本中再读取,我们就得到了如下的代码,要修改成自己学校的话只需要改post_header和post_data两个大括号里就可以了,从浏览器里复制。

        get_link.py

import requests # 校园网地址 post_addr = "http:/" # 获取ip地址 ip = open(r"ip.txt","r") user_ip = ip.read() ip.close() # 读取用户名和密码 list = [] up = open("passport.txt", "r") list = up.readlines() up.close() user = list[0].strip() passport = list[1].strip() # print(user) post_header = { 浏览器复制 } post_data = { 浏览器复制 'action': 'login', 'username': user, 'password': passport, 'ac_id': '1', 'user_ip': user_ip, 'save_me': '0', 'ajax': '1', } z = requests.post(post_addr, data=post_data, headers=post_header) print("连接成功,按任意键以退出") input("") 3.打包    

          打包方法网上有很多,我这里用的是pyinstaller,两个.py文件也可以打包,搜pyinstaller安装方法和pyinstaller打包多个文件的方法就可以了,打包后会生成两个文件,如下图

         然后把之前两个记事本文件拖进来放在一个文件夹里

         然后用记事本打开.spec文件

        修改红色框框里的那个列表,将两个记事本文件名加上去就可以了,图中我已经加好了。 

       



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3