很不幸,在一次停电事故中,宿舍楼的一些交换机烧毁了。我们宿舍再也无法使用有线网上网了。
宿舍配置的光猫非常难用,有两层网关,每次联网要依次在两个网页上进行登录操作。非常麻烦。于是,我用浏览器的开发者工具中的Network生成了一个脚本。
脚本中,需要将【学号】【密码】替换为自己的学号、密码。
特殊字符需要转义。不是数字、字母的特殊字符的转义方式是%【该字符的ASCII码的十六进制】。例如,密码中如果有’&’,则该字符应当被替换为%26。’&’的ASCII码为38,其16进制为0x26,故将其替换为%26。
Powershell版本(Edge生成的,适合Windows10、Windows11)

$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$session.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.41"
Invoke-WebRequest -UseBasicParsing -Uri "http://10.【补全登录页面的IP】:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C【学号】%40campus&user_password=【密码】&jsVersion=4.2.1&terminal_type=1&lang=zh-cn&v=2713&lang=zh" `
-WebSession $session `
-Headers @{
"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"
  "Referer"="http://10.【补全登录页面的IP】/"
}

$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$session.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.41"
Invoke-WebRequest -UseBasicParsing -Uri "https://lgn.bjut.edu.cn/" `
-Method "POST" `
-WebSession $session `
-Headers @{
"Accept"="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
  "Accept-Encoding"="gzip, deflate, br"
  "Accept-Language"="zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"
  "Cache-Control"="max-age=0"
  "Origin"="https://lgn6.bjut.edu.cn"
  "Referer"="https://lgn6.bjut.edu.cn/"
  "Sec-Fetch-Dest"="document"
  "Sec-Fetch-Mode"="navigate"
  "Sec-Fetch-Site"="same-site"
  "Upgrade-Insecure-Requests"="1"
  "sec-ch-ua"="`"Not.A/Brand`";v=`"8`", `"Chromium`";v=`"114`", `"Microsoft Edge`";v=`"114`""
  "sec-ch-ua-mobile"="?0"
  "sec-ch-ua-platform"="`"Windows`""
} `
-ContentType "application/x-www-form-urlencoded" `
-Body "DDDDD=【学号】&upass=【密码】&0MKKey=Login"

使用方法:
首先确保系统允许运行Powershell。

set-executionpolicy remotesigned 

之后,将Powershell代码复制到记事本,替换【登录地址】、【学号】、【密码】,之后保存为.ps1文件。右键,使用Powershell运行即可。
如果有更高需要,可以再自己写个程序,生成exe,以实现固定在任务栏/开始菜单等需求,连接校园网可以再少点一次。以下是一个C++版本的示例。这里需要写绝对路径,因为这里的“相对路径”其实是powershell.exe的相对路径。(总不能把这个脚本放到powershell同目录下吧…)

int main(){
    system("start powershell.exe D:\\test.ps1");
    return 0;
}

附:
curl版本(Linux下Firefox生成)

curl 'http://10.【补全登录页面的IP】:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C【学号】%40campus&user_password=【姓名】&jsVersion=4.2.1&terminal_type=1&lang=zh-cn&v=3854&lang=zh' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/111.0' -H 'Accept: */*' -H 'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: keep-alive' -H 'Referer: http://10.【补全登录页面的IP】'

curl 'https://lgn.bjut.edu.cn/' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/111.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Origin: http://lgn.bjut.edu.cn' -H 'Connection: keep-alive' -H 'Referer: http://lgn.bjut.edu.cn/' -H 'Upgrade-Insecure-Requests: 1' -H 'Sec-Fetch-Dest: document' -H 'Sec-Fetch-Mode: navigate' -H 'Sec-Fetch-Site: cross-site' -H 'Sec-Fetch-User: ?1' --data-raw 'DDDDD=【学号】&upass=【姓名】&v46s=1&0MKKey='