whois.handle: CHINANET-GD
whois.name: CHINANET Guangdong province network
whois.cidrs: 61.140.0.0/14 61.144.0.0/15 61.146.0.0/16
whois.updated: 2021-06-15T00:00:00.000000
services.protocol: HTTP
services.transport_protocol: TCP
services.scan_time: 2025-07-28T00:19:11.918484
services.banner: HTTP/1.1 200 OK
  Server:  
  Date:  <REDACTED>
  Content-Type: text/html
  Transfer-Encoding: chunked
  Connection: keep-alive
  Last-Modified: Mon, 28 Jul 2025 00:19:12 GMT
  
services.path: /
services.endpoint_type: HTTP
services.scan_time: 2025-07-28T00:19:11.918484
services.uri: http://61.142.90.55:81/
services.protocol: HTTP/1.1
services.status_reason: OK
services.key: Server
services.key: Connection
services.headers: keep-alive
services.key: Content-Type
services.headers: text/html
services.key: Date
services.headers: <REDACTED>
services.key: Transfer-Encoding
services.headers: chunked
services.key: Last-Modified
services.headers: Mon, 28 Jul 2025 00:19:12 GMT
services.supported_versions: HTTP/1.1
services.protocol: HTTP
services.transport_protocol: TCP
services.scan_time: 2025-07-27T14:02:04.171511
services.banner: HTTP/1.1 200 OK
  Date:  <REDACTED>
  Server: Server
  X-Frame-Options: SAMEORIGIN
  X-XSS-Protection: 1; mode=block
  X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, nosnippet, notranslate, noimageindex
  Transfer-Encoding: chunked
  Content-Type: text/html; charset=utf-8
  
services.version_selected: TLSv1_2
services.cipher_selected: TLS_RSA_WITH_AES_256_CBC_SHA
services.fingerprint_sha256: a8d2f5aa640526a9709f5bc1ea08209749ed593658d904c451263e0dad69428c
services.subject_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.issuer_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.ja4s: t120200_0035_2412b79bd618
services.version: TLSv1_2
services.ja4s: t120200_0035_2412b79bd618
services.version: TLSv1_1
services.ja4s: t110100_0035_bc98f8e001b5
services.version: TLSv1_0
services.ja4s: t100100_0035_bc98f8e001b5
services.issuer_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.common_name: vdi
services.country: CN
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.subject_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.common_name: vdi
services.country: CN
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.scan_time: 2025-07-27T23:34:04.536981
services.path: /
services.endpoint_type: HTTP
services.scan_time: 2025-07-27T14:02:04.171511
services.uri: https://61.142.90.55:444/
services.protocol: HTTP/1.1
services.status_reason: OK
services.key: Transfer-Encoding
services.headers: chunked
services.key: Server
services.headers: Server
services.key: X-Frame-Options
services.headers: SAMEORIGIN
services.key: X-XSS-Protection
services.headers: 1; mode=block
services.key: Content-Type
services.headers: text/html; charset=utf-8
services.key: Date
services.headers: <REDACTED>
services.key: X-Robots-Tag
services.headers: noindex, nofollow, noarchive, nosnippet, nosnippet, notranslate, noimageindex
services.html_tags: <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Cache-Control" content="must-revalidate"> <meta http-equiv="Expires" content="-1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
services.body: <!DOCTYPE html>
  <html>
  
  <head>
  	<meta http-equiv="Pragma" content="no-cache">
  	<meta http-equiv="Cache-Control" content="no-cache">
  	<meta http-equiv="Cache-Control" content="must-revalidate">
  	<meta http-equiv="Expires" content="-1">
  	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  	<script src="/com/common.js"></script>
  	<script src="/com/language.js"></script>
  	<script src="/com/64sys.js"></script>
  </head>
  
  <NOSCRIPT>
  	Your browser does not support JavaScript (or it is blocked). Please check your browser settings and make sure it supports JavaScript.
  </NOSCRIPT>
  
  <body>
  </body>
  
  <script>
  /*
  	Windows客户端要从中解析地址时间, 老版本时间为3s, 需保持不变
  	var selectline_timeout = "3";
  */
  	var g_time_distance = "3";
  	var g_midatk = "0";
  	var g_lines = [];
  	var g_delay_timer = [];
  	var g_timeout = null;
  
  	// 基础延时时间10ms，主要用在优先级延时上
  	var BASIS_TIME = 10;
  
  	// 每条线路的请求次数最大为5次，最小为3次
  	var MAX = 5;
  	var MIN = 3;
  
  	//验证请求安全性
  	function validSec(url) {
  		if (g_midatk === "1") {
  			var regex = new RegExp("^((https)?://)", "i");
  			if (!regex.exec(url)) {
  				alert(tr("您访问的") + tr('SSL VPN') + tr("系统正受到中间人攻击(SSL Strip攻击),请直接使用https协议访问") + tr('SSL VPN') + tr("系统."));
  				return false;
  			}
  		}
  		return true
  	}
  
      /**
       * luyi 20120223
  	 * xyx (update) 20200307 
       * 1、先分析line_list中的数据，转换成Array
       * 2、通过优先级级对数据进行分组，并按优先级别进行排序
       * 3、对分组后的数据按速度选路
  	 * ----------update------
  	 * 1. 减小优先级对选路影响
  	 * 2. 请求出错时，重新发送请求
  	 * 3. 格式化代码
  	 * 4. 更新了注释
       */
  
  	/** 
  	 * old function about win_location just support for old version update
  	 *
  	 * srcLinesArray	img标签
  	 * level			优先级
  	 * callback			最有线路选出来后，需要执行的跳转函数
  	 */
  	function win_location(srcLinesArray, level, callback) {
  		var lines = [],
  			stop = false,
  			config_timeout = parseFloat(g_time_distance),
  			delay_timeout = level * config_timeout * BASIS_TIME,
  			result = null;
  
          /**
           * 图片onload成功时
  		 * 1. 为路线排序，并判断是否出现最优路线
  		 * 2. 如果没有选出最优路线，则继续请求
           */
  		function loaded() {
  			var _lines = [];
  			for (var i = 0, len = lines.length; i < len; i++) {
  				_lines[i] = {
  					line: i,
  					index: lines[i]
  				};
  			}
  
  			// 根据线路请求的次数降序排列
  			_lines.sort(function (a, b) {
  				if (a.index > b.index) {
  					return -1;
  				} else if (a.index < b.index) {
  					return 1;
  				} else {
  					return 0;
  				}
  			});
  
  			// 最少请求3次才能判断最优线路
  			if (_lines[0].index >= MIN) {
  				stop = true;
  
  				// 已经符合选路规则，选择onload次数完成最多的。
  				result = srcLinesArray[_lines[0].line].url;
  
  				// 优先级高的先跳，优先级别的等待时间（高：0，中：30ms，低：60ms）
  				g_delay_timer[level] = setTimeout(function () {
  					clearTimeout(g_timeout);
  					callback(result);
  				}, delay_timeout);
  			}
  		}
  
  		/** 图片请求失败之后，重新请求数据
  		 *
  		 * el		img标签
  		 * index	该优先级下的第几条线路
  		 */
  		function reLoad(el, index) {
  			return function () {
  				el.src = srcLinesArray[index].src + '?' + Math.random();
  			};
  		}
  
  		/**
  		 * 1. 每条线路返回后，请求次数的计数开始递增
  		 * 2. 为路线排序，并判断是否出现最优路线
  		 * 3. 如果没有选出最优路线，则继续请求
  		 * 
  		 * el		img标签
  		 * index	该优先级下的第几条线路
  		 */
  		function createDelegate(el, index) {
  			return function () {
  				if (!stop) {
  					lines[index]++;
  					srcLinesArray[index].count = lines[index];
  					loaded();
  					if (!stop && lines[index] <= MAX) {
  						el.src = srcLinesArray[index].src + '?' + Math.random();
  					}
  				}
  			};
  		}
  
  		// 为每条线路创建img标签，通过src属性产生get请求，从而监听返回数据进行选路
  		var els = document.createDocumentFragment();
  		for (var i = 0, len = srcLinesArray.length; i < len; i++) {
  			lines[i] = 0;
  			var el = document.createElement('img');
  			el.style.position = 'absolute';
  			el.style.top = '-1000px';
  			el.onload = createDelegate(el, i);
  			el.onerror = reLoad(el, i);
  			el.src = srcLinesArray[i].src + '?' + Math.random();
  			els.appendChild(el);
  		}
  		document.body.appendChild(els);
  	}
  
  	/**
  	 * 第二步:按优先级别对路线进行分组
  	 * 
  	 * srcLinesArray 	所有线路对象的数组
  	 * callback 		最有线路选出来后，需要执行的跳转函数
  	 */
  	function lineLevel(srcLinesArray, callback) {
  		var obj_lines = {},
  			arr_lines = [],
  			config_timeout = parseFloat(g_time_distance);
  
  		// 以下两个for循环都是为了将优先级相同的线路分组，老代码没动
  		for (var i = 0, len = srcLinesArray.length; i < len; i++) {
  			var right = srcLinesArray[i].right;
  			if (!obj_lines[right]) {
  				obj_lines[right] = [];
  			}
  			obj_lines[right].push(srcLinesArray[i]);
  		}
  		for (var prop in obj_lines) {
  			if (obj_lines.hasOwnProperty(prop)) {
  				arr_lines.push({
  					right: prop,
  					lines: obj_lines[prop]
  				});
  			}
  		}
  
  		// 按级别进行正序排列，[0,1,2]
  		arr_lines.sort(function (a, b) {
  			if (a.right > b.right) {
  				return 1;
  			} else if (a.right < b.right) {
  				return -1;
  			} else {
  				return 0;
  			}
  		});
  
  		// 将每个优先级的最优线路选出
  		for (var i = 0, len = arr_lines.length; i < len; i++) {
  			win_location(arr_lines[i].lines, i, callback);
  		}
  
  		// 当所有路线都在指定时间内未完成选路，则查找有多少条已经有发送过成功请求的，按优先级别，选择成功次数最高的。
  		g_timeout = setTimeout(function () {
  
  			// 统计出有多少条有onload成功的线路
  			var slines = [];
  			for (var i = 0, len = arr_lines.length; i < len; i++) {
  				var item = arr_lines[i],
  					i_lines = item.lines;
  				for (var ii = 0, ilen = i_lines.length; ii < ilen; ii++) {
  					if (i_lines[ii].count != null && i_lines[ii].count > 0) {
  						slines.push(i_lines[ii]);
  					}
  				}
  				if (slines.length > 0) {
  					break;
  				}
  			}
  
  			// 按优先级别，找到onload成功最多的线路，倒序排列
  			if (slines.length > 0) {
  				slines.sort(function (a, b) {
  					if (a.count > b.count) {
  						return -1;
  					} else if (a.count < b.count) {
  						return 1;
  					} else {
  						return 0;
  					}
  				});
  				callback(slines[0].url);
  			} else {
  
  				// 当所有路线都超时，直接选优先级别最高的第一条。
  				callback(arr_lines[0].lines[0].url);
  			}
  			clearTimeout(g_timeout);
  
  			// 清除所有延时器
  			for (var k = 0; k < g_delay_timer.length; k++) {
  				clearTimeout(g_delay_timer[k]);
  			}
  		}, arr_lines.length * config_timeout * 1000);
  	}
  
  	// 第一步:对线路数据进行分析
  	function gotoLines() {
  		var lines = g_lines,
  			hasSelectedLine = false;
  		function gotoUrl(url) {
  
  			// 校验是否已经选择完线路准备跳转，并且线路安全无攻击
  			if (hasSelectedLine || !validSec(url)) {
  				return;
  			}
  			hasSelectedLine = true;
  			window.location.href = url;
  		}
  
  		if (lines.length > 1) {
  			// 多线路
  			lineLevel(lines, gotoUrl);
  		} else if (lines.length === 1) {
  			// 单线路
  			gotoUrl(lines[0].url);
  		} else {
  			// 无线路，默认跳转当前地址的登录界面
  			var baseUrl = '';
  			if (window.location.origin) {
  				baseUrl = window.location.origin;
  			} else {
  				baseUrl = window.location.protocol + '//' + window.location.hostname +
  					(window.location.port ? ':' + window.location.port : '');
  			}
  			gotoUrl(baseUrl + '/por/login_psw.csp');
  		}
  	}
  	/*end*/
  
  	// 判断能否使用cookie
  	function CookiesEnabled() {
  		try {
  			var secure = "";
  			if (/^https/i.test(window.location.protocol)) {
  				secure = "; secure";
  			}
  			document.cookie = "cookie=yes" + secure;
  			cookieOK = document.cookie.indexOf("cookie=yes") > -1;
  			if (cookieOK) {
  				var lastyear = new Date();
  				lastyear.setFullYear(lastyear.getFullYear() - 1);
  				document.cookie = "cookie=yes; expires=" + lastyear.toGMTString() + secure;
  				return true;
  			} else {
  				return false;
  			}
  		}
  		catch (ex) {
  			return false;
  		}
  	}
  
  	(function () {
  
  		// 校验能否使用cookie，后续有功能需要用到
  		// 下面这一行和Windows客户端代码强关联，不能动
  		if(CookiesEnabled())
  		{
  
  			// 校验是否是64位IE浏览器
  			if (window.Browser && Browser.is64 && Browser.isIE) {
  				InitFor64('index');
  				return;
  			}
  
  			// 客户端线路数据
  			// 注意: 以下注释中的代码不可修改和重复, Windows客户端要从中解析地址
  			g_lines = [{src:"",url:"https://61.142.90.55:444/por/login_psw.csp",flag:'win_location("https://61.142.90.55:444/por/login_psw.csp")',right:0}];
  			gotoLines();
  			window.setLang();
  		} else {
  			alert(tr("当前设置Cookie被禁用,禁用Cookie将不能使用VDI"));
  		}
  
  	})();
  
  </script>
  
  </html>
services.name: https://61.142.90.55:444/favicon.ico
services.body_hash_sha1: sha1:b88cbf66f29162749dd892b30c3210ef9e1d803c
services.supported_versions: HTTP/1.1
services.protocol: IKE
services.transport_protocol: UDP
services.scan_time: 2025-07-27T20:54:05.274106
services.value: network.device.vpn
services.protocol: HTTP
services.transport_protocol: TCP
services.scan_time: 2025-07-27T14:18:20.275022
services.banner: HTTP/1.1 200 OK
  Date:  <REDACTED>
  Server: Server
  X-Frame-Options: SAMEORIGIN
  X-XSS-Protection: 1; mode=block
  X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, nosnippet, notranslate, noimageindex
  Transfer-Encoding: chunked
  Content-Type: text/html; charset=utf-8
  
services.version_selected: TLSv1_2
services.cipher_selected: TLS_RSA_WITH_AES_256_CBC_SHA
services.fingerprint_sha256: a8d2f5aa640526a9709f5bc1ea08209749ed593658d904c451263e0dad69428c
services.subject_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.issuer_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.ja4s: t120200_0035_2412b79bd618
services.version: TLSv1_2
services.ja4s: t120200_0035_2412b79bd618
services.version: TLSv1_1
services.ja4s: t110100_0035_bc98f8e001b5
services.version: TLSv1_0
services.ja4s: t100100_0035_bc98f8e001b5
services.issuer_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.common_name: vdi
services.country: CN
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.subject_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=vdi
services.common_name: vdi
services.country: CN
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.scan_time: 2025-07-23T09:54:56.657526
services.path: /
services.endpoint_type: HTTP
services.scan_time: 2025-07-27T14:18:20.275022
services.uri: https://61.142.90.55:4430/
services.protocol: HTTP/1.1
services.status_reason: OK
services.key: Transfer-Encoding
services.headers: chunked
services.key: Server
services.headers: Server
services.key: X-Frame-Options
services.headers: SAMEORIGIN
services.key: X-XSS-Protection
services.headers: 1; mode=block
services.key: Content-Type
services.headers: text/html; charset=utf-8
services.key: Date
services.headers: <REDACTED>
services.key: X-Robots-Tag
services.headers: noindex, nofollow, noarchive, nosnippet, nosnippet, notranslate, noimageindex
services.html_tags: <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Cache-Control" content="must-revalidate"> <meta http-equiv="Expires" content="-1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
services.body: <!DOCTYPE html>
  <html>
  
  <head>
  	<meta http-equiv="Pragma" content="no-cache">
  	<meta http-equiv="Cache-Control" content="no-cache">
  	<meta http-equiv="Cache-Control" content="must-revalidate">
  	<meta http-equiv="Expires" content="-1">
  	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  	<script src="/com/common.js"></script>
  	<script src="/com/language.js"></script>
  	<script src="/com/64sys.js"></script>
  </head>
  
  <NOSCRIPT>
  	Your browser does not support JavaScript (or it is blocked). Please check your browser settings and make sure it supports JavaScript.
  </NOSCRIPT>
  
  <body>
  </body>
  
  <script>
  /*
  	Windows客户端要从中解析地址时间, 老版本时间为3s, 需保持不变
  	var selectline_timeout = "3";
  */
  	var g_time_distance = "3";
  	var g_midatk = "0";
  	var g_lines = [];
  	var g_delay_timer = [];
  	var g_timeout = null;
  
  	// 基础延时时间10ms，主要用在优先级延时上
  	var BASIS_TIME = 10;
  
  	// 每条线路的请求次数最大为5次，最小为3次
  	var MAX = 5;
  	var MIN = 3;
  
  	//验证请求安全性
  	function validSec(url) {
  		if (g_midatk === "1") {
  			var regex = new RegExp("^((https)?://)", "i");
  			if (!regex.exec(url)) {
  				alert(tr("您访问的") + tr('SSL VPN') + tr("系统正受到中间人攻击(SSL Strip攻击),请直接使用https协议访问") + tr('SSL VPN') + tr("系统."));
  				return false;
  			}
  		}
  		return true
  	}
  
      /**
       * luyi 20120223
  	 * xyx (update) 20200307 
       * 1、先分析line_list中的数据，转换成Array
       * 2、通过优先级级对数据进行分组，并按优先级别进行排序
       * 3、对分组后的数据按速度选路
  	 * ----------update------
  	 * 1. 减小优先级对选路影响
  	 * 2. 请求出错时，重新发送请求
  	 * 3. 格式化代码
  	 * 4. 更新了注释
       */
  
  	/** 
  	 * old function about win_location just support for old version update
  	 *
  	 * srcLinesArray	img标签
  	 * level			优先级
  	 * callback			最有线路选出来后，需要执行的跳转函数
  	 */
  	function win_location(srcLinesArray, level, callback) {
  		var lines = [],
  			stop = false,
  			config_timeout = parseFloat(g_time_distance),
  			delay_timeout = level * config_timeout * BASIS_TIME,
  			result = null;
  
          /**
           * 图片onload成功时
  		 * 1. 为路线排序，并判断是否出现最优路线
  		 * 2. 如果没有选出最优路线，则继续请求
           */
  		function loaded() {
  			var _lines = [];
  			for (var i = 0, len = lines.length; i < len; i++) {
  				_lines[i] = {
  					line: i,
  					index: lines[i]
  				};
  			}
  
  			// 根据线路请求的次数降序排列
  			_lines.sort(function (a, b) {
  				if (a.index > b.index) {
  					return -1;
  				} else if (a.index < b.index) {
  					return 1;
  				} else {
  					return 0;
  				}
  			});
  
  			// 最少请求3次才能判断最优线路
  			if (_lines[0].index >= MIN) {
  				stop = true;
  
  				// 已经符合选路规则，选择onload次数完成最多的。
  				result = srcLinesArray[_lines[0].line].url;
  
  				// 优先级高的先跳，优先级别的等待时间（高：0，中：30ms，低：60ms）
  				g_delay_timer[level] = setTimeout(function () {
  					clearTimeout(g_timeout);
  					callback(result);
  				}, delay_timeout);
  			}
  		}
  
  		/** 图片请求失败之后，重新请求数据
  		 *
  		 * el		img标签
  		 * index	该优先级下的第几条线路
  		 */
  		function reLoad(el, index) {
  			return function () {
  				el.src = srcLinesArray[index].src + '?' + Math.random();
  			};
  		}
  
  		/**
  		 * 1. 每条线路返回后，请求次数的计数开始递增
  		 * 2. 为路线排序，并判断是否出现最优路线
  		 * 3. 如果没有选出最优路线，则继续请求
  		 * 
  		 * el		img标签
  		 * index	该优先级下的第几条线路
  		 */
  		function createDelegate(el, index) {
  			return function () {
  				if (!stop) {
  					lines[index]++;
  					srcLinesArray[index].count = lines[index];
  					loaded();
  					if (!stop && lines[index] <= MAX) {
  						el.src = srcLinesArray[index].src + '?' + Math.random();
  					}
  				}
  			};
  		}
  
  		// 为每条线路创建img标签，通过src属性产生get请求，从而监听返回数据进行选路
  		var els = document.createDocumentFragment();
  		for (var i = 0, len = srcLinesArray.length; i < len; i++) {
  			lines[i] = 0;
  			var el = document.createElement('img');
  			el.style.position = 'absolute';
  			el.style.top = '-1000px';
  			el.onload = createDelegate(el, i);
  			el.onerror = reLoad(el, i);
  			el.src = srcLinesArray[i].src + '?' + Math.random();
  			els.appendChild(el);
  		}
  		document.body.appendChild(els);
  	}
  
  	/**
  	 * 第二步:按优先级别对路线进行分组
  	 * 
  	 * srcLinesArray 	所有线路对象的数组
  	 * callback 		最有线路选出来后，需要执行的跳转函数
  	 */
  	function lineLevel(srcLinesArray, callback) {
  		var obj_lines = {},
  			arr_lines = [],
  			config_timeout = parseFloat(g_time_distance);
  
  		// 以下两个for循环都是为了将优先级相同的线路分组，老代码没动
  		for (var i = 0, len = srcLinesArray.length; i < len; i++) {
  			var right = srcLinesArray[i].right;
  			if (!obj_lines[right]) {
  				obj_lines[right] = [];
  			}
  			obj_lines[right].push(srcLinesArray[i]);
  		}
  		for (var prop in obj_lines) {
  			if (obj_lines.hasOwnProperty(prop)) {
  				arr_lines.push({
  					right: prop,
  					lines: obj_lines[prop]
  				});
  			}
  		}
  
  		// 按级别进行正序排列，[0,1,2]
  		arr_lines.sort(function (a, b) {
  			if (a.right > b.right) {
  				return 1;
  			} else if (a.right < b.right) {
  				return -1;
  			} else {
  				return 0;
  			}
  		});
  
  		// 将每个优先级的最优线路选出
  		for (var i = 0, len = arr_lines.length; i < len; i++) {
  			win_location(arr_lines[i].lines, i, callback);
  		}
  
  		// 当所有路线都在指定时间内未完成选路，则查找有多少条已经有发送过成功请求的，按优先级别，选择成功次数最高的。
  		g_timeout = setTimeout(function () {
  
  			// 统计出有多少条有onload成功的线路
  			var slines = [];
  			for (var i = 0, len = arr_lines.length; i < len; i++) {
  				var item = arr_lines[i],
  					i_lines = item.lines;
  				for (var ii = 0, ilen = i_lines.length; ii < ilen; ii++) {
  					if (i_lines[ii].count != null && i_lines[ii].count > 0) {
  						slines.push(i_lines[ii]);
  					}
  				}
  				if (slines.length > 0) {
  					break;
  				}
  			}
  
  			// 按优先级别，找到onload成功最多的线路，倒序排列
  			if (slines.length > 0) {
  				slines.sort(function (a, b) {
  					if (a.count > b.count) {
  						return -1;
  					} else if (a.count < b.count) {
  						return 1;
  					} else {
  						return 0;
  					}
  				});
  				callback(slines[0].url);
  			} else {
  
  				// 当所有路线都超时，直接选优先级别最高的第一条。
  				callback(arr_lines[0].lines[0].url);
  			}
  			clearTimeout(g_timeout);
  
  			// 清除所有延时器
  			for (var k = 0; k < g_delay_timer.length; k++) {
  				clearTimeout(g_delay_timer[k]);
  			}
  		}, arr_lines.length * config_timeout * 1000);
  	}
  
  	// 第一步:对线路数据进行分析
  	function gotoLines() {
  		var lines = g_lines,
  			hasSelectedLine = false;
  		function gotoUrl(url) {
  
  			// 校验是否已经选择完线路准备跳转，并且线路安全无攻击
  			if (hasSelectedLine || !validSec(url)) {
  				return;
  			}
  			hasSelectedLine = true;
  			window.location.href = url;
  		}
  
  		if (lines.length > 1) {
  			// 多线路
  			lineLevel(lines, gotoUrl);
  		} else if (lines.length === 1) {
  			// 单线路
  			gotoUrl(lines[0].url);
  		} else {
  			// 无线路，默认跳转当前地址的登录界面
  			var baseUrl = '';
  			if (window.location.origin) {
  				baseUrl = window.location.origin;
  			} else {
  				baseUrl = window.location.protocol + '//' + window.location.hostname +
  					(window.location.port ? ':' + window.location.port : '');
  			}
  			gotoUrl(baseUrl + '/por/login_psw.csp');
  		}
  	}
  	/*end*/
  
  	// 判断能否使用cookie
  	function CookiesEnabled() {
  		try {
  			var secure = "";
  			if (/^https/i.test(window.location.protocol)) {
  				secure = "; secure";
  			}
  			document.cookie = "cookie=yes" + secure;
  			cookieOK = document.cookie.indexOf("cookie=yes") > -1;
  			if (cookieOK) {
  				var lastyear = new Date();
  				lastyear.setFullYear(lastyear.getFullYear() - 1);
  				document.cookie = "cookie=yes; expires=" + lastyear.toGMTString() + secure;
  				return true;
  			} else {
  				return false;
  			}
  		}
  		catch (ex) {
  			return false;
  		}
  	}
  
  	(function () {
  
  		// 校验能否使用cookie，后续有功能需要用到
  		// 下面这一行和Windows客户端代码强关联，不能动
  		if(CookiesEnabled())
  		{
  
  			// 校验是否是64位IE浏览器
  			if (window.Browser && Browser.is64 && Browser.isIE) {
  				InitFor64('index');
  				return;
  			}
  
  			// 客户端线路数据
  			// 注意: 以下注释中的代码不可修改和重复, Windows客户端要从中解析地址
  			g_lines = [{src:"",url:"https://61.142.90.55:4430/por/login_psw.csp",flag:'win_location("https://61.142.90.55:4430/por/login_psw.csp")',right:0}];
  			gotoLines();
  			window.setLang();
  		} else {
  			alert(tr("当前设置Cookie被禁用,禁用Cookie将不能使用VDI"));
  		}
  
  	})();
  
  </script>
  
  </html>
services.name: https://61.142.90.55:4430/favicon.ico
services.body_hash_sha1: sha1:e719eb9e62750d16e156c53c51198d30143ebae4
services.supported_versions: HTTP/1.1
services.protocol: UNKNOWN
services.transport_protocol: TCP
services.scan_time: 2025-07-28T06:31:43.552836
services.version_selected: TLSv1_3
services.cipher_selected: TLS_AES_256_GCM_SHA384
services.ja4s: t130200_1302_a56c5b993250
services.version: TLSv1_3
services.ja4s: t130200_1302_a56c5b993250
services.version: TLSv1_2
services.ja4s: t120200_c02f_344b4dce5a52
services.names: 10.251.251.251
services.issuer_dn: C=cn, ST=guangdong, L=shenzhen, O=sangfor, OU=sf, CN=sangfor.com
services.common_name: sangfor.com
services.country: cn
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.organizational_unit: sf
services.subject_dn: C=cn, ST=guangdong, O=sangfor, OU=af, CN=SANGFOR
services.common_name: SANGFOR
services.country: cn
services.province: guangdong
services.organization: sangfor
services.organizational_unit: af
services.source: OSI_TRANSPORT_LAYER
services.part: o
services.product: linux
services.cpe: cpe:2.3:o:*:linux:*:*:*:*:*:*:*:*
services.protocol: UNKNOWN
services.transport_protocol: TCP
services.scan_time: 2025-07-27T09:40:24.566321
services.source: OSI_TRANSPORT_LAYER
services.part: o
services.product: linux
services.cpe: cpe:2.3:o:*:linux:*:*:*:*:*:*:*:*
services.protocol: UNKNOWN
services.transport_protocol: TCP
services.scan_time: 2025-07-26T11:05:42.316502
services.version_selected: TLSv1_2
services.cipher_selected: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
services.ja4s: t120200_c030_344b4dce5a52
services.version: TLSv1_2
services.ja4s: t120200_c030_344b4dce5a52
services.version: TLSv1_1
services.ja4s: t110200_c014_344b4dce5a52
services.version: TLSv1_0
services.ja4s: t100200_c014_344b4dce5a52
services.issuer_dn: C=CN, O=INFOSEC, CN=WEBUI
services.common_name: WEBUI
services.country: CN
services.organization: INFOSEC
services.subject_dn: CN=WEBUI
services.common_name: WEBUI
services.scan_time: 2025-07-27T22:17:42.993531
services.protocol: HTTP
services.transport_protocol: TCP
services.scan_time: 2025-07-28T07:11:36.408056
services.banner: HTTP/1.1 200 OK
  Date:  <REDACTED>
  Server: Server
  X-Frame-Options: SAMEORIGIN
  X-Content-Type-Options: nosniff
  X-XSS-Protection: 1; mode=block
  X-Permitted-Cross-Domain-Policies: none
  X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, nosnippet, notranslate, noimageindex
  Content-Length: 7433
  Content-Type: text/html; charset=utf-8
  
services.version_selected: TLSv1_2
services.cipher_selected: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
services.fingerprint_sha256: 85fb2f91dd12275a0145b636534f84024ad68b69b8ee88684ff711375805b348
services.subject_dn: C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Network, OU=http://www.usertrust.com, CN=UTN - DATACorp SGC
services.issuer_dn: C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Network, OU=http://www.usertrust.com, CN=UTN - DATACorp SGC
services.ja4s: t120200_c030_344b4dce5a52
services.version: TLSv1_2
services.ja4s: t120200_c030_344b4dce5a52
services.version: TLSv1_1
services.ja4s: t110200_c014_344b4dce5a52
services.version: TLSv1_0
services.ja4s: t100200_c014_344b4dce5a52
services.issuer_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=sslvpn
services.common_name: sslvpn
services.country: CN
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.subject_dn: C=CN, ST=guangdong, L=shenzhen, O=sangfor, CN=sslvpn
services.common_name: sslvpn
services.country: CN
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.scan_time: 2025-07-28T00:33:09.849984
services.path: /
services.endpoint_type: HTTP
services.scan_time: 2025-07-28T07:11:36.408056
services.uri: https://61.142.90.55:24800/
services.protocol: HTTP/1.1
services.status_reason: OK
services.key: Server
services.headers: Server
services.key: X-XSS-Protection
services.headers: 1; mode=block
services.key: Content-Length
services.headers: 7433
services.key: X-Content-Type-Options
services.headers: nosniff
services.key: Content-Type
services.headers: text/html; charset=utf-8
services.key: Date
services.headers: <REDACTED>
services.key: X-Robots-Tag
services.headers: noindex, nofollow, noarchive, nosnippet, nosnippet, notranslate, noimageindex
services.key: X-Frame-Options
services.headers: SAMEORIGIN
services.key: X-Permitted-Cross-Domain-Policies
services.headers: none
services.html_tags: <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache" > <meta http-equiv="Cache-Control" content="must-revalidate" > <meta http-equiv="Expires" content="-1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
services.body: <html>
  <head>
  
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="Cache-Control" content="no-cache" >
  <meta http-equiv="Cache-Control" content="must-revalidate" >
  <meta http-equiv="Expires" content="-1">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  
  <NOSCRIPT>
  Your browser does not support JavaScript (or it is blocked). Please check your browser settings and make sure it supports JavaScript.
  </NOSCRIPT>
  <body>
  </body>
  
  <script>
  
  var hashIndex = location.href.lastIndexOf("#");
  var sourceUrl = "";
  if(hashIndex != -1  && location.href.length > (hashIndex + 1)) {
  	sourceUrl = location.href.substr(hashIndex + 1);
  }
  else {
  	sourceUrl = encodeURIComponent(location.href);
  }
  
  /*
  客户端要从中解析地址时间, 老版本时间为3s, 需保持不变
  var selectline_timeout = "3";
  */
  
  var time_distance = "10";
  var g_midatk = "0";
  var g_lines = [];
  //var lineInterArr = [];
  var delayTimer = [];
  var g_timeout = null;
  
  /*
  	luyi 20120223
  	1、先分析line_list中的数据，转换成Array
  	2、通过优先级级对数据进行分组，并按优先级别进行排序
  	3、对分组后的数据按速度选路
  	*/
  	/*old function about win_location just support for old version update*/
  function win_location(imgs, level, callback){
  	var lines = [],
  		stop = false,
  		config_timeout = parseFloat(time_distance),
  		interval = level * config_timeout * 10,
  		delay_timeout = level * config_timeout * 10,
  		result = null,
  		MAX = 5,
  		MIN = 3;
  	function loaded(is_timeout){	//图片onload成功时，检查此级别的线路请求次数是否达到了最大次数MAX，或第一条与第二条的差距是否达到了最小次数MIN；线路只有一条时，检查是否达到了最小请求次数MIN。
  		var _lines = [];
  		for(var i=0, len = lines.length; i<len; i++){
  			_lines[i] = { line: i, index: lines[i] };
  		}
  		_lines.sort(function(a, b){
  			if(a.index > b.index){
  				return -1;
  			}else if(a.index < b.index){
  				return 1;
  			}else{
  				return 0;
  			}
  		});
  		//if((_lines.length === 1 && _lines[0].index >= MIN) || _lines[0].index >= MAX || (_lines.length >= 2 && _lines[0].index - _lines[1].index >= MIN)){
  		if(_lines[0].index >= MIN){
  			stop = true;
  			result = imgs[_lines[0].line].url;	//已经符合选路规则，选择onload次数完成最多的。
  			// 优先级高的先跳，优先级别的等待时间（高：0，中：100ms，低：200ms）
  			delayTimer[level] = setTimeout(function () {
  				clearTimeout(g_timeout);
  				callback(result);  
  			}, delay_timeout);
  		}
  	}
  	function reLoad(el, index){
  		return function(){
  			el.src = imgs[index].src + '?' + Math.random();
  		};
  	}
  
  	function createDelegate(el, index){
  		return function(){
  			if(!stop){
  				lines[index]++;
  				imgs[index].count = lines[index];
  				loaded(false);
  				if(!stop && lines[index] <= MAX){
  					el.src = imgs[index].src + '?' + Math.random();
  				}
  			}
  		};
  	}
  
  	var els = document.createDocumentFragment();
  	for(var i=0, len = imgs.length; i<len; i++){
  		lines[i] = 0;
  		var el = document.createElement('img');
  		el.style.position = 'absolute';
  		el.style.top = '-1000px';
  		el.onload = createDelegate(el, i);
  		el.onerror = reLoad(el, i);
  		el.src = imgs[i].src + '?' + Math.random();
  		els.appendChild(el);
  	}
  	document.body.appendChild(els);
  	//定时查询是否已经完成了选路，且达到了优先级别的等待时间（高:0,中:30ms,低60ms;差值10毫秒）
  	//lineInterArr[level] = setInterval(function(){
  	//	interval-=10;  // interval-100, 初始值interval = level * config_timeout * 10,
  	//	if(result && interval<=0){
  	//		for(var k=0; k<lineInterArr.length;k++){
  	//			clearInterval(lineInterArr[k]);
  	//		}
  	//		clearTimeout(g_timeout);
  	//		callback(result);  //优先级高的先跳
  	//	}
  	//}, 10);
  }
  //第二步:按优先级别对路线进行分组
  function lineLevel(imgs, callback){
  	var obj_lines = {},
  		arr_lines = [],
  		config_timeout = parseFloat(time_distance);
  	for(var i=0, len = imgs.length; i<len; i++){
  		var right = imgs[i].right;
  		if(!obj_lines[right]){
  			obj_lines[right] = [];
  		}
  		obj_lines[right].push(imgs[i]);
  	}
  	for(var prop in obj_lines){
  		if(obj_lines.hasOwnProperty(prop)){
  			arr_lines.push({ right: prop, lines: obj_lines[prop] });
  		}
  	}
  	arr_lines.sort(function(a, b){	//按级别进行排序
  		if(a.right > b.right){
  			return 1;
  		}else if(a.right < b.right){
  			return -1;
  		}else{
  			return 0;
  		}
  	});
  	for(var i=0, len = arr_lines.length; i<len; i++){
  		win_location(arr_lines[i].lines, i, callback);
  	}
  	g_timeout = setTimeout(function(){	//当所有路线都在指定时间内未完成选路，则查找有多少条已经有发送过成功请求的，按优先级别，选择成功次数最高的。
  		var slines = [];	//统计出有多少条有onload成功的线路
  		for(var i=0, len = arr_lines.length; i<len; i++){
  			var item = arr_lines[i],
  				i_lines = item.lines;
  			for(var ii=0, ilen = i_lines.length; ii<ilen; ii++){
  				if(i_lines[ii].count != null && i_lines[ii].count > 0){
  					slines.push(i_lines[ii]);
  				}
  			}
  			if(slines.length > 0){
  				break;
  			}
  		}
  		if(slines.length > 0){	//按优先级别，找到onload成功最多的线路
  			slines.sort(function(a, b){
  				if(a.count > b.count){
  					return -1;
  				}else if(a.count < b.count){
  					return 1;
  				}else{
  					return 0;
  				}
  			});
  			callback(slines[0].url);
  		}else{
  			callback(arr_lines[0].lines[0].url);	//当所有路线都超时，直接选优先级别最高的第一条。
  		}
  		clearTimeout(g_timeout);
  		//for(var k=0; k<lineInterArr.length;k++){
  		//	clearInterval(lineInterArr[k]);
  		//}
  	
  		for(var k=0; k<delayTimer.length; k++){
  			clearTimeout(delayTimer[k]);
  		}
  	}, arr_lines.length * config_timeout * 1000);
  }
  //第一步:对线路数据进行分析
  function gotoLines(){
  	var lines = g_lines,
  		flag = false;
  
  	function gotoUrl(url){
  		if(flag){ return; }
  
  		flag = true;
  		
  		// 存储 sourceUrl，校验window.name中是否存储过数据并符合标记
  		var tempURL,
  		    urlFlag;
  		tempURL = window.name || '';
  		urlFlag = tempURL.substr(0,10);
  		if(urlFlag !== 'sf_ssl_ms_'){
  			window.name = 'sf_ssl_ms_' + sourceUrl;
  		}
  
  		window.location.href = url;
  	}
  
  
  
  	if(lines.length > 1){
  		lineLevel(lines, gotoUrl);
  	}else if(lines.length === 1){
  		gotoUrl(lines[0].url);
  	}else{
  
  		var getOrigin = function () {
  			if (window.location.origin) {
  				return window.location.origin;
  			} else {
  				return window.location.protocol + '//' + window.location.hostname + 
  					(window.location.port ? ':' + window.location.port : '');
  			}
  		}
  
  		gotoUrl(getOrigin() + '/portal');
  	}
  }
  /*end*/
  
  (function () {
  	var loc = window.location;
  	var url = loc.protocol+"//"+loc.host;
  	if(/\/$/g.test(url)){
  		url = url.substring(0,url.length-1);
  	}
  	url = encodeURIComponent(url);
  	//注意: 以下注释中的代码不可修改和重复, 客户端要从中解析地址
  	/* 
  		if(CookiesEnabled())
  		g_lines = [{src:"",url:"https://61.142.90.55:24800/por/login_psw.csp",flag:'win_location("https://61.142.90.55:24800/por/login_psw.csp")',right:0}];
  	*/
  	g_lines = [{src:"",url:"https://61.142.90.55:24800/portal",right:0}];
  	gotoLines();
  })();
  </script>
  </html>
  
  
services.body_hash_sha1: sha1:0eecca4c9a81f1dfa3e0aa92deeafa626e48443c
services.supported_versions: HTTP/1.1
services.protocol: UNKNOWN
services.transport_protocol: TCP
services.scan_time: 2025-07-23T12:21:32.862072
services.version_selected: TLSv1_3
services.cipher_selected: TLS_AES_256_GCM_SHA384
services.ja4s: t130200_1302_a56c5b993250
services.version: TLSv1_3
services.ja4s: t130200_1302_a56c5b993250
services.version: TLSv1_2
services.ja4s: t120200_c02f_344b4dce5a52
services.names: 10.251.251.251
services.issuer_dn: C=cn, ST=guangdong, L=shenzhen, O=sangfor, OU=sf, CN=sangfor.com
services.common_name: sangfor.com
services.country: cn
services.locality: shenzhen
services.province: guangdong
services.organization: sangfor
services.organizational_unit: sf
services.subject_dn: C=cn, ST=guangdong, O=sangfor, OU=af, CN=SANGFOR
services.common_name: SANGFOR
services.country: cn
services.province: guangdong
services.organization: sangfor
services.organizational_unit: af
services.protocol: UNKNOWN
services.transport_protocol: TCP
services.scan_time: 2025-07-27T20:41:46.449033
services.source: OSI_TRANSPORT_LAYER
services.part: o
services.product: linux
services.cpe: cpe:2.3:o:*:linux:*:*:*:*:*:*:*:*
[binary data, 64 values, 1,480 bytes]