1.1熟悉 URL我们所说的网址,实在就是同一资本定位符(uniform resource locator简称URL),经过这个唯一的地址,可以找到对应的办事。它的标准格式以下: 协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志 这个只是标准的格式,有些信息是可以省略的,比如登录信息等,还有办事器地址可以用域名地址,也可以用ip地址。带条理的文件途径实在就是你要拜候的办事器资本,问号?前面是get请求的参数。http协议有多种请求方式,post和get只是其中的两种。 1.get方式主如果获得办事器的资本信息,请求的参数一般放在url?前面。 2.post方式主如果把数据提交给办事器,在报文的正文部分停止提交。 http协议本质是获得某种“资本”(视频、音频、网页、图片……),而传输则是其功用。现实上,上网的大部分行为,都在停止着进程间通讯,既然是通讯,就需要获得信息和发送信息,所以对应到我们生活中,大部分的上网行为不过两种: 1.把办事器上面的资本拿到当地(下载短视频、收集小说……) 2.把当地的办事器推送到办事器(搜索、登录、下单……) 1.2 http请求报文格式首行: [方式] + [url] + [版本] 1.3 http响应报头格式首行: [版本号] + [状态码] + [状态码诠释] HTTP常见Header: Content-Type: 数据范例(text/html等) Content-Length: Body的长度 Host: 客户端奉告办事器, 所请求的资本是在哪个主机的哪个端口上; User-Agent: 声明用户的操纵系统和阅读器版本信息; referer: 当前页面是从哪个页面跳转过来的; location: 搭配3xx状态码利用, 告诉客户端接下来要去那里拜候; Cookie: 用于在客户端存储少许信息. 凡是用于实现会话(session)的功用; 2.具体实现import requestsimport socket # 获得ip地址 def get_host_ip(): """ 查询本机ip地址 :return: ip """ try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('10.255.255.255', 1)) ip = s.getsockname()[0] finally: s.close() return ip user_ip = get_host_ip() # 校园网地址,最好不要用阅读器里的url,还是倡议抓包获得 post_addr = "http://10.10.244.11:801/eportal/" #下面两个大括号里面都是复制自己黉舍校园网登录网站中的,冒号双方都要加上双引号 post_header = { #报头信息,经过抓包,获得 } post_data = { #正文数据,经过抓包获得 } #提交http请求报文 z = requests.post(post_addr, data=post_data, headers=post_header) print("登录校园网成功,局域网ip以下:") print(user_ip) #input("") 上面是代码的首要逻辑,细节信息还需要抓包添补。一路头电脑上是没有安装requests包的,需要自己先安装一下,前面python需要导入的包都是用pip3号令安装。假如没安装pip3号令的,请自行安装。 pip3 install requests2.1 获得url在谷歌阅读器先翻开上网登录窗口,然后按F12键进入开辟者形式,勾选保存日志,输入账号密码,停止登录,在收集那边获得登录时的http请求报文。 然后检察抓到的包,检察第一个即可,通常为第一个,假如不安心可以点进区检察,看到标头里的请求方式,确保是post。然后里面还有一个请求网址,就是url了。只需要复制?问号前面的内容即可,前面的是一些get方式的请求参数,不大白什么意义的看长文url的诠释。往下拉,还有响应标头,请求标甲等信息,:warning:留意,由于我们要向办事器请求登录,所以我们需要的是请求标头,而不是响应,别搞错了。 # 校园网地址,最好不要用阅读器里的url,还是倡议抓包获得 post_addr = "http://10.10.244.11:801/eportal/" 这样就完成了第一步,获得到了校园网地址。为什么说不倡议间接从阅读器里面复制呢,比如我们黉舍这类情况返回的响应是3xx,说明网址被重定向过了,所以抓包到的地址比力正确一些。 2.2 获得请求报文的报头把请求标头里的内容添补到代码块里,部分header的寄义上文已经诠释过,还想领会更多请自行搜索。添补的格式是键值 key:values形式,key和values都是字符串需要加引号,高低键值用逗号离隔,下面是我自己的报文,只是个例子。 #下面两个大括号里面都是复制自己黉舍校园网登录网站中的,冒号双方都要加上双引号post_header = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Host': '10.10.244.11', 'Referer': 'http://10.10.244.11/', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) APPleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36', } 2.3 获得请求报文的数据把载荷里的查询字符串、表单数据都添补到法式块中,这里首要上传的就是你的登录信息,不要填错了。 post_data = {'c': 'ACSetting', 'a': 'Login', 'DDDDD': 'xxxx', 'upass': 'xxxxx', 'protocol': 'http:', 'hostname': '10.10.244.11', 'iTermType': '1', 'wlanuserip': user_ip, 'wlanacip': 'xxxxxx', 'wlanacname': 'SPL-BRAS-SR8806-X', 'mac': '00-00-00-00-00-00', 'ip': user_ip, 'enAdvert': '0', 'queryACIP': '0', 'loginMethod': '1' } 2.4 获得本机的局域网ip为什么要零丁写一个函数获得主机IP呢,由于IP地址分为牢固IP地址和静态IP地址,我们需要获得的是静态的IP地址,它是一向变化的,不能间接在请求数据里填抓包拿到的地址,否则你换个地方,能够阿谁地址就生效了。 牢固IP:牢固IP地址是持久牢固分派给一台计较机利用的IP地址,通常为特别的办事器才具有牢固IP地址。 静态IP:由于IP地址资本很是欠缺,经过电话拨号上网或普通宽带上网用户一般不具有牢固IP地址,而是由ISP静态分派临时的一个IP地址,这些都是计较机系统自动完成的。 # 获得ip地址#需要导入socket包,系统应当自带 def get_host_ip(): """ 查询本机ip地址 :return: ip """ try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('10.255.255.255', 1)) ip = s.getsockname()[0] finally: s.close() return ip user_ip = get_host_ip() 写到这里实在,已经可以自动毗连校园网了,可是条件是你先翻开Wi-Fi,连到黉舍的校园网Wi-Fi。说到底,现在的功用只能帮助你登录校园网,毗连校园网Wi-Fi的工作还是得你来做,假如你之前连的是其他收集,那末你还有停止收集的切换。所以还要再增加一个自动毗连Wi-Fi的功用,恰好python里有一个pywifi包可以支持这个功用。可是!!间接pip3 安装的pywifi包里面不支持mac os的Wi-Fi控制,由于开辟这个pywifi包的作者不用mac os系统,所以pywifi包只支持windows和linux。幸亏,后来有人提出这个题目,作者后来又写了一个合适mac os的包,不外需要自己下载。我也是履历很多挫折,才处理了这个题目。 3.自动毗连Wi-Fi还是先在终端安装pywifi包,然后找到pywifi包对应位置,把内容全数替换成支持moc os 的pywifi包。 pip3 install pywifi假如找不到pywifi途径可以先履行卸载号令,然后就会弹出所以安装过的包途径了,然后复制所需的途径,最好挑选n号令,停止卸载就行。 获得安装途径今后,可以在终端里检察,也可以在mac可视化文件形式里检察,我更喜好可视化,翻开的时辰有的文件夹就翻译成中文了,我相信只要专心必定能找到。 找到pywifi途径以后,就要下载支持mac os的pywifi包了,下载完停止替换就行。那这个支持mac os的pywifi在哪呢?这里给出作者github的地址,作者awkman在Issue24里面也回答了,他写了一个兼容Macos的demo法式。 可以在终端用git号令下载,也可以,间接到作者仓库取自己下载,大师随意。git号令下载指令以下:-b 前面带的是分支,作者放在macos_dev里了。 git clone -b macos_dev https://github.com/awkman/pywifi.git下载完检查一下能否是包括了mac的.py文件,包括了就没题目。然后把包括了mac的这个pywifi文件和之前的pywifi停止替换就行。先cd到当前文件夹,然后cp拷贝到本来途径(怎样找途径前文已经说了),文件名不异会自动替换里面内容。 cd pywificp -r pywifi /Users/wenanqin/Library/Python/3.8/lib/python/site-packages 之前我在这样做完,运转还是报错,由于发现_wifiutil_macos.py里有一个包没安装,装完就行了。 pip3 install pyobjc下面起头完成毗连wifi功用的代码,在同一途径下,新建一个wifi.py文件。 import pywifiimport time #保存包中写义的常量 from pywifi import const def wifi_connect_status(): """ 判定本机能否有无线网卡,以及毗连状态 :return: 已毗连或存在无线网卡返回1,否则返回0 """ #建立一个元线工具 wifi = pywifi.PyWiFi() #取当前机械,第一个元线网卡 iface = wifi.interfaces()[0] #有能够有多个无线网卡,所以要指定 #判定能否毗连成功 if iface.status() in [const.IFACE_CONNECTED,const.IFACE_INACTIVE]: #print('wifi已经毗连了收集') return 1 else: print("兄弟,我没设备自动翻开Wi-Fi功用,你先翻开wifi再试?") return 0 def scan_wifi(): """ 扫描附件wifi :return: 扫描成果工具 """ #扫描附件wifi wifi = pywifi.PyWiFi() iface = wifi.interfaces()[0] iface.scan() #扫描附件wifi time.sleep(1) basewifi = iface.scan_results() # for i in basewifi: # print('wifi扫描成果:{}'.format(i.ssid)) # ssid 为wifi称号 # print('wifi装备MAC地址:{}'.format(i.bssid)) return basewifi def connect_wifi(): wifi = pywifi.PyWiFi() # 建立一个wifi工具 ifaces = wifi.interfaces()[0] # 取第一个无穷网卡 #print("本机无线网卡称号:") #print(ifaces.name()) # 输出无线网卡称号 ifaces.disconnect() # 断开网卡毗连 time.sleep(3) # 缓冲3秒 profile = pywifi.Profile() # 设置文件 profile.ssid = "NJUPT-CMCC" # wifi称号 #连校园网不需要密码登录,还有登录模块 # profile.auth = const.AUTH_ALG_OPEN # 需要密码 # profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密范例 # profile.cipher = const.CIPHER_TYPE_CCMP # 加密单元 # profile.key = '4000103000' #wifi密码 ifaces.remove_all_network_profiles() # 删除其他设置文件 tmp_profile = ifaces.add_network_profile(profile) # 加载设置文件 ifaces.connect(tmp_profile) # 毗连 time.sleep(1) # 尝试10秒能否成功毗连 isok = True if ifaces.status() == const.IFACE_CONNECTED: print("毗连校园网成功") else: print("毗连校园网失利") #ifaces.disconnect() # 断开毗连 time.sleep(1) return isok 这里有三个功用,前两个测试用的,现实可以只挪用第三个。link.py登录校园网之前先挪用毗连wifi模块。 import requestsimport socket #导入适才写的wifi模块,一定放在同一文件夹内 import wifi #检察wifi状态 wifi.wifi_connect_status() #毗连wifi wifi.connect_wifi() # 获得ip地址 def get_host_ip(): """ 查询本机ip地址 :return: ip """ try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('10.255.255.255', 1)) ip = s.getsockname()[0] finally: s.close() return ip user_ip = get_host_ip() # 校园网地址 post_addr = "http://10.10.244.11:801/eportal/" #下面两个大括号里面都是复制自己黉舍校园网登录网站中的,冒号双方都要加上双引号 post_header = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Host': '10.10.244.11', 'Referer': 'http://10.10.244.11/', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36', } post_data = { 'c': 'ACSetting', 'a': 'Login', 'DDDDD': ',0,xxxxxxx@cmcc', 'upass': 'xxxxx', 'protocol': 'http:', 'hostname': '10.10.244.11', 'iTermType': '1', 'wlanuserip': user_ip, 'wlanacip': 'xxxxxxx', 'wlanacname': 'SPL-BRAS-SR8806-X', 'mac': '00-00-00-00-00-00', 'ip': user_ip, 'enAdvert': '0', 'queryACIP': '0', 'loginMethod': '1' } z = requests.post(post_addr, data=post_data, headers=post_header) #假如不想每次都手动封闭窗口可以删除下面的input,然后将print里的内容改成自己想要的 print("登录校园网成功,局域网ip以下:") print(user_ip) #input("") 4.打包成exe文件1.先安装pyinstaller包 pip3 install pyinstaller2.找到pyinstaller号令途径(带bin,老方式卸载看途径),我间接履行不了pyinstaller指令,由于python系统就有,情况变量还没设置。 3.履行指令打包 先cd到需要打包文件的途径下,然后履行指令,我安装了一个超级右键法式,很方便操纵 #将 xx.py 打包为 xx.exe /Users/wenanqin/Library/Python/3.8/bin/pyinstaller -F xx.py履行完操纵,会天生三个文件,exe文件在dist文件内,至此,全数工作完成。 履行法式,结果如上。 |
小编在之前就介绍过很多油猴里的神器插件,这里给大家总结几款经典中的经典。01Usersc
shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统
作者:厚昌学院特聘讲师,厚昌学院顾问团队核心成员,从事互联网行业从事互联网行业8
前言「油猴脚本」是一段脚本代码,通过它可以让浏览器实现各种各样的扩展功能,和浏览
shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成
关注扩展迷、喜欢折腾电脑的小伙伴们,应该都对各种各样的浏览器插件不陌生了。浏览器
Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome,
油猴脚本管理器的超详细下载安装使用教程——新手必看油猴可以帮你干什么:全网VIP视
参考文章和视频:将iPad作为Mac Mini主屏幕的实现方法视频:无屏自动启动随航 iPad作为M
在运营短视频时,你有没有遇到过这样的问题:1、拍了一半发现拍摄场景不行;2、拍摄过
我们先看一下这个脚本的下载效果。我是100M的宽带,这直接能飙到20MB/s,所以下载速度
写脚本?对于没有视频背景的朋友来说可能就会有疑问,脚本是什么?不应该是电影,电视
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:Stark-C大家好,我是Stark-
初次见面,大家好。相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的
从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的
有人说,网红行业的现状是江山代有才人出,各领风骚“好几天”。的确,即便是行业顶流
最近115调整了接口,导致115转存助手ui优化版3.8.1版本无法转存或获取SHA1。有大神在
根据第49次《中国互联网络发展状况统计报告》数据,截至2022年12月,我国网络视频(含
Shell脚本编程难,难于上青天!这话不假,尤其很多程序员新人,学了几个月Shell脚本写
在上期我们做了个形象的比喻,把短视频制作比喻成我们造房子,前面我们已经带领大家打
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15314649589
Copyright @ 2022-2044 杭州共生网络 www.gongshengyun.cn Powered by Discuz!