Ventrilo 2.1.2+
HTTP/1.1 200 OK
cache-control: no-store
connection: keep-alive
content-length: 4156
Show more
HTTP/1.1 200 OK
cache-control: no-store
connection: keep-alive
content-length: 4156
content-security-policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; object-src 'none'; form-action 'self';
content-type: text/html
date: Tue, 24 Feb 2026 00:11:50 GMT
referrer-policy: same-origin
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>qBittorrent Web \xe7\x94\xa8\xe6\x88\xb7\xe7\x95\x8c\xe9\x9d\xa2</title>
<link rel="icon" type="image/png" href="images/skin/qbittorrent32.png" />
<link rel="stylesheet" type="text/css" href="css/login.css" />
<script src="scripts/lib/mootools-1.2-core-yc.js"></script>
<script>
window.onload = function() {
$('username').focus();
$('username').select();
};
window.addEvent('domready', function() {
$('loginform').addEvent('submit', function(e) {
new Event(e).stop();
submitLoginForm();
});
//@author HuangYeWuDeng
//check token auth
//window.location.search
let searchParams = new URLSearchParams(window.location.search);
if (searchParams.has("token") === true) {
let tk = searchParams.get("token");
let port = searchParams.get("port");
new Request({
url: 'api/v2/auth/login',
method: 'post',
data: 'token=' + tk + '&port=' + port,
onFailure: function(xhr) {
if (xhr.responseText !== "") {
$('error_msg').set('html', xhr.responseText);
}
else {
$('error_msg').set('html', '\xe7\x99\xbb\xe5\xbd\x95\xe5\xa4\xb1\xe8\xb4\xa5\xef\xbc\x8c\xe5\x8f\xaf\xe8\x83\xbd\xe6\x98\xaf\xe6\x97\xa0\xe6\xb3\x95\xe8\xbf\x9e\xe6\x8e\xa5\xe5\x88\xb0 qBttorrent\xe3\x80\x82');
}
},
onSuccess: function(text) {
if (text == "Ok.") {
window.history.replaceState({}, document.title, '/' + '?_ts=' + (new Date()).getTime());
window.location.reload(true);
}
else {
$('error_msg').set('html', '\xe6\x97\xa0\xe6\x95\x88\xe7\x9a\x84\xe7\x94\xa8\xe6\x88\xb7\xe5\x90\x8d\xe6\x88\x96\xe5\xaf\x86\xe7\xa0\x81\xe3\x80\x82');
window.history.replaceState({}, document.title, '/' + '?_ts=' + (new Date()).getTime());
}
}
}).send();
}
});
function submitLoginForm() {
new Request({
url: 'api/v2/auth/login',
method: 'post',
data: $('loginform').toQueryString(),
onComplete: function() {
$('password').set('value', '');
},
onFailure: function(xhr) {
if (xhr.responseText !== "") {
$('error_msg').set('html', xhr.responseText);
}
else {
$('error_msg').set('html', '\xe7\x99\xbb\xe5\xbd\x95\xe5\xa4\xb1\xe8\xb4\xa5\xef\xbc\x8c\xe5\x8f\xaf\xe8\x83\xbd\xe6\x98\xaf\xe6\x97\xa0\xe6\xb3\x95\xe8\xbf\x9e\xe6\x8e\xa5\xe5\x88\xb0 qBttorrent\xe3\x80\x82');
}
},
onSuccess: function(text) {
if (text == "Ok.") {
// Session started. Simply reload page.
window.location.reload();
}
else {
$('error_msg').set('html', '\xe6\x97\xa0\xe6\x95\x88\xe7\x9a\x84\xe7\x94\xa8\xe6\x88\xb7\xe5\x90\x8d\xe6\x88\x96\xe5\xaf\x86\xe7\xa0\x81\xe3\x80\x82');