【小工具的制作】制作一个通过HTTP请求来实现上网认证的自动登录小工具

article/2025/11/4 16:21:22

目录

  • 1. 前言
  • 2. 分析
  • 3. 编码
    • 3.1 Python版
      • 3.1.1 编写Python脚本
      • 3.1.2 下载Python转EXE程序工具
      • 3.1.3 打包成EXE程序
    • 3.2 Java版
      • 3.2.1 编写代码
  • 4. 最后一步
  • 5. 总结

1. 前言

  由于学校机房联网时,总是需要登录个人账号。为实现快速登录,我们就此问题给出了自己的解决方案。

2. 分析

环境介绍
网站:http://10.10.10.5/0.htm
注意:此网站为学校内部网站,其他网站需要根据实际情况作出修改。


  打开网站,并打开开发者工具。
  在登录页面中,我们去分析它发出的post请求,其中包含了我们需要的账号和密码信息。我们便可利用这些信息,通过程序来发送一个post请求。

请添加图片描述

3. 编码

3.1 Python版

  此版本需要电脑上有Python环境。

3.1.1 编写Python脚本

  右键创建一个FastLogin.py文件,并将以下内容写入。

import requests
import sys
name = ""     #此处填写用户名
password = "" #此处填写密码def login():url = "http://10.10.10.5/0.htm"headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36","Cookie":"myusername="+name+"; username="+name+"; smartdot="+password,"Accept-Encoding":"gzip, deflate","Content-Type":"application/x-www-form-urlencoded"}data = {"DDDDD":name,"upass":password,"0MKKey":"%B5%C7%A1%A1%C2%BC","v6ip":""}res = requests.post(url=url,data=data,headers=headers)tip(res,"登录")def logout():url = "http://10.10.10.5/F.htm"headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36","Cookie":"myusername="+name+"; username="+name+"; smartdot="+password,"Accept-Encoding":"gzip, deflate","Content-Type":"application/x-www-form-urlencoded"}res = requests.get(url=url,headers=headers)tip(res,"注销")def tip(res,operation):if res.status_code==200:print(operation+"成功")else:print(operation+"失败,错误信息")print(res.text)if __name__=="__main__":if len(sys.argv)==1 or sys.argv[1]=='login':login()elif sys.argv[1]=='logout':logout()else:print("操作不支持")

  将上面的用户名和密码改成自己的账号即可。到这里就可以实现自动登录了,但是这个脚本需要Python环境。为实现在没有Python环境的电脑上也能运行,我们将其打包成EXE程序。

3.1.2 下载Python转EXE程序工具

  在命令行执行以下命令,安装pyinstaller工具。

pip install pyinstaller

3.1.3 打包成EXE程序

  执行以下命令完成打包操作。

pyinstaller -F -i favicon.ico FastLogin.py -n 快速登录

  其中-i表示添加的图标favicon.ico-n表示将生成程序命名为快速登录,可根据情况添加。
  执行完成后,会在当前目录下生成一些文件和目录,我们在dist目录中取得所要的程序。
注意:直接执行此命令,要求上面的脚本文件要以UTF-8格式存储。

3.2 Java版

  此版本使用到java.net.http.HttpClient需要Java11以上的环境。

3.2.1 编写代码

  创建一个FastLogin.java的文件,并将以下内容写入。

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;public class FastLogin {private static String name="";     //此处填写用户名private static String password=""; //此处填写些密码private static void login() throws IOException, InterruptedException {HttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://10.10.10.5/0.htm")).header("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36").header("Cookie","myusername="+name+"; username="+name+"; smartdot="+password).header("Accept-Encoding","gzip, deflate").header("Content-Type","application/x-www-form-urlencoded").POST(HttpRequest.BodyPublishers.ofString("DDDDD="+name+"&upass="+password+"&0MKKey=%B5%C7%A1%A1%C2%BC&v6ip=")).build();HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());checkStatus(response.statusCode());}private static void checkStatus(int statusCode) {if (statusCode==200){System.out.println("Success!!!");}else{System.out.println("Cao!");}}private static void logout() throws IOException, InterruptedException {HttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://10.10.10.5/F.htm")).header("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36").header("Cookie","myusername="+name+"; username="+name+"; smartdot="+password).header("Accept-Encoding","gzip, deflate").header("Content-Type","application/x-www-form-urlencoded").build();HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());checkStatus(response.statusCode());}public static void main(String[] args) {try {if (args.length==0){login();}else if(args.length==1 && "logout".equalsIgnoreCase(args[0])){logout();}else{System.out.println("please input again.");}} catch (IOException | InterruptedException e) {System.out.println("Error happened!");e.printStackTrace();}}
}

  同样的修改用户名和密码,使用javac FastLogin编译即可。

4. 最后一步

  新建一个批处理文件启动.bat写入以下信息。完成后,双击即可来到学习通网站。

echo off
@Rem Python版打包成exe程序,仅需要程序名即可
FastLogin
@Rem Java版
@Rem java FastLogin
@Rem 打开学习通网站
explorer http://i.mooc.chaoxing.com/space/index.shtml
@Rem 需要的可以写入学校官网链接

5. 总结

  本文只介绍了通过发送post请求来实现网络登录的认证。但若想在浏览器页面实现自动登录,只靠发送post请求是不够的。因为,我们向服务器发送post请求,而服务器响应的信息,此程序并不能够像浏览器一样解析和展示,所以也没有实际意义。而且,我也不能通过外部手段像浏览器写入Cookie信息。所以,需要其他的办法。
  在另一篇文章中,介绍了通过Selenium来模拟用户登录,想要更进一步的可以通过此传送门查看。


http://chatgpt.dhexx.cn/article/IGFnmI9B.shtml

相关文章

常见的网络抓包工具推荐

因为发现好多人想抓包,但是不知道有哪些工具,今天我给大家推荐几款抓包工具,希望对大家有所帮助。 网络抓包工具的用途 网络抓包工具的主要功能是将网络执行的过程,详细的记录下来。如果你是一个程序员,肯定对网络抓…

【转】Fiddler抓包工具手机添加代理后连不上网解决办法

转载:Fiddler抓包工具手机添加代理后连不上网解决办法_数据结构和算法的博客-CSDN博客 最近,在工作中需要测试一个监控网络请求的SDK,需要校验该SDK记录的耗时数据的准确性。根据网上大神们提供的工作经验,可以利用Fiddler工具给…

超好用的网络小工具

整理了一下一些自己使用的网络链路状态测试工具。 一、RAWCAP-本地回路抓包 本地使用wireshark无法抓回路包,为此百度了一下RawCap可以抓回路包,亲测可用。特记录下来。 缺点:有一些系统需要安装Microsoft .NET Framework 4 https://www.m…

8大轻型网管工具,网络管理好帮手

从设备发现到系统、网络和流量可视性,这些轻型的网管工具非常实用。在网络和服务器世界,重点是可视性、可视性、可视性,如果你不知道你的网络和服务器在每天每秒正在做什么,你很可能会出问题。幸运的是,这里有很多好工…

上网本之必备网络工具推荐

伴随着中国3G无线网络的全面商用运营,“上网本”已经成为2009年最炙手可热的词汇之一。“上网本”便宜实惠、小巧便携,但低配置却是它的一个软肋,所以能够完全配合“上网本”使用的低耗能软件似乎并不多。这里,笔者结合自己的一些…

网络测速工具

一、Speedtest测试外网网速 Speedtest是用来测试网络性能的开源软件,在Linux下面安装Speedtest可以用来测试网络出口的上传和下载速度,帮助排查网络方面导致的故障。 官网: Github链接:https://github.com/sivel/speedtest-cli …

windows - 网络流量监控工具

由于需要在本地的流量监控工具 1、DUMeterPortable 可以对当前的pc网络的上下行做记录和统计,可以统计每天的流量控制,程序实时记录 2、BW 功能比较强大,但是监控比较烦人,如果是查看流量的话,这个软件没有必要 3、…

上网必备 11款流氓软件清除工具推荐

2007-09-19 来源: 天极yesky 作者:李红 据调查,目前高达95%以上的网民都受到过流氓软件的侵袭,其中,半数以上未成功卸载过流氓软件。流氓软件虽然不是真正的病毒,但是它强行弹出广告、劫持和更换IE主页,…

10 个免费的网络监控工具

如果你有一个网站或一个网络,你应该密切的关注它,并在问题发生之后迅速解决。最简单方便的办法是通过使用服务器/网络监视工具来监视您的设备,以防任何可能出现的问题。有许多免费和开源服务器和网络监控工具存在,但找到一个好用的并不是件容…

10个免费网络管理工具

作为一名资深网络工程师,在15年以上的职业生涯中,你可能经历过在各种环境中进行评估,使用了大量的开源网络工具。有些实在是有太多的bug,比如缺乏关键功能或太耗时。你可能也在苦苦寻求着好用的免费网络管理工具,在本文…

网络工具Network Tools

Hosts文件管理工具 Hosts文件的位置 C:\Windows\System32\drivers\etc\hosts SwitchHosts 通过界面开启或者关闭来管理多个Hosts,下载地址。

网管利器:七大免费网络工具

今天无意间又发现了一系列的好东西。 这里,我为您推荐七个免费的网络工具,使网络管理员的日常工作更加轻松。这七个工具大多小巧玲珑,无需安装,用一个U盘就可以轻松携带! 一、Pingplotter让Ping和Traceroute焕发青春 运行平台&am…

不用科学上网,免费的GPT-4 IDE工具Cursor保姆级使用教程

Cursor官网下载地址 我下载的是window版的 操作特别简单,只需要记住两个快捷键就行: Windows 平台: CtrlK : 智能生成代码 CtrlL: 询问代码含义 Mac 平台: CommandK : 智能生成代码 CommandL: 询问代码含义 生成示例&#xff1a…

浏览器必备的上网工具,同样也是收藏党必备工具

浏览器必备的上网工具,同样也是收藏党必备工具, 网页图片收藏工具,可以收藏全网的网页图片,无需下载到本地了,太方便了 工具名称:BdTab新标签页插件,支持图片收藏

21个非常有用的免费网络工具

在线服务 收集了21个在日常生活中经常会用到的免费网络工具。不管你是学生、程序开发员、设计师借是办公室职员,那几个工具都十分有用。一起来看看都有哪些。 1.Phonevite使用Phonevite?可以用你本人的声音发送提醒和警报,你只需3步即可将免费的提醒消息…

Android应用Preference相关及源码浅析(Preference组件家族篇)

1 前言 前一篇(点我阅读前一篇《Android应用Preference相关及源码浅析(SharePreferences篇)》)我们讨论分析使用了Android的SharePreferences,相信看过的朋友都有了自己的感悟与理解,这一篇我们继续乘热打铁来说说SharePreferenc…

Android APP:Preference使用详解和实例(附源码)

Android APP:Preference使用详解和实例 一、Preference 是Android app中重要的控件之一,Settings 模块大部分都是通过Preference 实现的,这里将学习preference 使用方法。 二、Perference 使用方法 一般在XML文件夹中创建xml文件来对Setting…

Android开发之 Preference首选项

首选项最常使用的地方是系统的设置列表或应用程序的设置页。本示例在android 4.0上运行。    在res/xml文件下建立xml文件,设置需要的控件。下面的xml文件使用了PreferenceCategory 、CheckBoxPreference、ListPreference。PreferenceCategory 是一个标题栏分隔符…

Android国际化后英文显示自动大写解决办法

做国际化的时候&#xff0c;发现一个问题&#xff0c;在value-en的string.xml文件中设置的英文明明是小写字母&#xff0c;但是Button的显示却变成了全部大写&#xff0c;比如设置的 <string name"confirm">confirm</string> <string name"canc…

了解Android中的Preference结构的设计与实现

本文不会涉及这些Preference的使用方式&#xff0c;比如如何定义XML文件、如何使用PreferenceActivity和PreferenceFragment加载设置&#xff0c;这些都可以在Android Developer的官方指南里了解到详情。本文主要通过分析源代码来分享Preference的设计和实现方式&#xff0c;让…