中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]VBS调用IE进UTF8论坛,中文编码无法登陆
作者:
标题: [已解决]VBS调用IE进UTF8论坛,中文编码无法登陆 上一主题 | 下一主题
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『楼 主』:  [已解决]VBS调用IE进UTF8论坛,中文编码无法登陆

自己做了个登论坛小号的程序如下(用户和密码正确): Set regwsh=createobject("wscript.shell") Dim Wsh,cookies Set Wsh = WScript.CreateObject("WScript.Shell") cookies=regwsh.regread ("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies") regwsh.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies","C:\\Documents and Settings\\All Users\\Cookies\\我是马甲" Wsh.Run "IEXPLORE.EXE bbs.dp168.com/loggin ...鎴戞槸椹敳&password=15239776",,False wscript.sleep 3000 regwsh.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies",cookies Set Wsh=NoThing WScript.quit 本程序利用IE或其它浏览器启动时只检查一次cookies的原理来实现多个IE窗口同时登录多个用户功能。其中下面这句的乱码是被转换过后的用户名“我是马甲”: Wsh.Run "IEXPLORE.EXE bbs.dp168.com/loggin ...鎴戞槸椹敳&password=15239776",,False 使用了批处理生成vbs只能生成ansi编码。而这次的论坛要求使用utf8编码(一些论坛是),所以当户名是中文时老是出错,英文用户名时不会出错。怎样能把ANSI编码的转成utf8呢?vbs只能使用ANSI代码,一用UTF8就出错,临时解决方案是用一个ANSI文本、一个UTF8文本,在调用IE的字符串里使用转换过后的UTF8的字符串,但这样做任然有很多中文出现问号,使过程无法完成,比如用户名为“一个会员”时,转成UTF8是“涓€涓細鍛?”,这个问号的出现使用户无法登陆,有没有好办法呢? [ Last edited by 9zhmke on 2009-7-8 at 15:16 ]


2009-7-8 12:37
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  UTF就直接用UTF编码传就行了

cookie完全不用改。。。就一句就可以了啊 直接: 点击链接: bbs.dp168.com/loggin ...




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-7-8 13:11
查看资料  发短消息  网志   编辑帖子  回复  引用回复
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『第 3 楼』:  

这是两个不相干的问题,如果不改注册表里的cookies,是不可以同时登两个以上的号的,不信你在本论坛试就知道了。 ...你句子里这个后面的%??是怎么来的呢? [ Last edited by 9zhmke on 2009-7-8 at 13:21 ]


2009-7-8 13:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

你没有看我的标题么?




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-7-8 13:43
查看资料  发短消息  网志   编辑帖子  回复  引用回复
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『第 5 楼』:  

看了,vbs的文件如果用utf文件根本就不能执行。不知道怎么才能在里面弄成utf8。如果可以转换成三字节格式的%数据就好了。 [ Last edited by 9zhmke on 2009-7-8 at 14:10 ]


2009-7-8 13:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 6 楼』:  

记事本用过没? 简单方法用专用播放器。。。 要用系统的方法就新建记事本,写 我是马甲 然后另存为 utf8编码名字叫1.txt 没用16进制查看器怎么看呢? 新建一个文本文档写000000000000000 UTF8编码1个汉字转3个字节,你打3(记事本UTF编码头)+12个0 然后保存为2.txt 然后打开CMD 运行: fc /b 1.txt 2.txt 会得到2列信息,一列是1的编码,一列30(0的编码) 所以。。。。 还是推荐找个专门工具转吧。。。 其实貌似。。。 很多网页你提交都可以看到。。。比如吧,类似google 你查找下"我是马甲"看下IE的URL就知道了




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-7-8 14:11
查看资料  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 7 楼』:  专用播放器。。。

专用编码转换器。。。




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-7-8 14:42
查看资料  发短消息  网志   编辑帖子  回复  引用回复
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『第 8 楼』:  

Originally posted by slore at 2009-7-8 02:42 PM: 专用编码转换器。。。
不会全手工操作吧? 我的目的是根据一个用户名密码清单来生成这么几百个vbs。 如果一个直接在地址栏用javascript:alert(encodeURI('我是马甲'))就可以查出来,多了还不清楚怎么弄。继续查资料中.... [ Last edited by 9zhmke on 2009-7-8 at 14:59 ]


2009-7-8 14:46
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:  那就自己写呗

MsgBox UTF8Encode("我是马甲") Public Function UTF8Encode(szString) Dim szChar Dim szTemp Dim szCode Dim szHex Dim szBin Dim iCount1 Dim iCount2 Dim iStrLen1 Dim iStrLen2 Dim lResult Dim lAscVal szString = Trim(szString) iStrLen1 = Len(szString) For iCount1 = 1 To iStrLen1 szChar = Mid(szString, iCount1, 1) lAscVal = AscW(szChar) If lAscVal >= &H0 And lAscVal <= &HFF Then If (lAscVal >= &H30 And lAscVal <= &H39) or _ (lAscVal >= &H41 And lAscVal <= &H5A) or _ (lAscVal >= &H61 And lAscVal <= &H7A) Then szCode = szCode & szChar Else szCode = szCode & "%" & Hex(AscW(szChar)) End If Else szHex = Hex(AscW(szChar)) iStrLen2 = Len(szHex) For iCount2 = 1 To iStrLen2 szChar = Mid(szHex, iCount2, 1) szBin = szBin & Mid("0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;", CLng("&H" & szChar) * 5 + 1, 4) Next szTemp = "1110" & Left(szBin, 4) & "10" & Mid(szBin, 5, 6) & "10" & Right(szBin, 6) For iCount2 = 1 To 24 If Mid(szTemp, iCount2, 1) = "1" Then lResult = lResult + 1 * 2 ^ (24 - iCount2) Else: lResult = lResult + 0 * 2 ^ (24 - iCount2) End If Next szTemp = Hex(lResult) szCode = szCode & "%" & Left(szTemp, 2) & "%" & Mid(szTemp, 3, 2) & "%" & Right(szTemp, 2) End If szBin = vbNullString lResult = 0 Next UTF8Encode = szCode End Function




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-7-8 15:07
查看资料  发短消息  网志   编辑帖子  回复  引用回复
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『第 10 楼』:  

刚试了可以了,太谢谢了,就是要这个效果呢


2009-7-8 15:14
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『第 11 楼』:  

把生成程序一起发上来,给大家省去调试的麻烦: 其中涉及到的LUNTAN2.TXT是马甲存放文件,格式为用户名+空格+密码,空格为任意个但是用户名和密码中不能有空格
@echo off
set menu=42
dir *./b|find "字母"&&for /f %%i in ('dir /b *.') do if not %%i==保留 rd /s /q %%i>nul 2>nul
set ch=1
set hz=1
set ch_count=0
set hz_count=0
setlocal enabledelayedexpansion
for /f "tokens=1,2" %%i in (LUNTAN2.TXT) do (
	set ansi=temp
	echo 正在处理:“%%i”密码为“%%j”
	echo Set regwsh=createobject^("wscript.shell"^) >%%i.vbs 
	>>%%i.vbs echo Dim Wsh,bbs,cookies
	>>%%i.vbs echo Set Wsh = WScript.CreateObject^("WScript.Shell"^)
	>>%%i.vbs echo cookies=regwsh.regread ^("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies"^)
	>>%%i.vbs echo regwsh.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies","C:\\Documents and Settings\\All Users\\Cookies\\%%i"
	>>%%i.vbs echo bbs=UTF8Encode^("%%i"^)
	>>%%i.vbs echo user="IEXPLORE.EXE http://bbs.dp168.com/logging.php?action=login&loginsubmit=true&cookietime=0&username="^&bbs^&"&password=%%j"
	>>%%i.vbs echo Wsh.Run user,,False
	>>%%i.vbs echo wscript.sleep 3000
	>>%%i.vbs echo regwsh.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies",cookies
	>>%%i.vbs echo Set Wsh=NoThing
	>>%%i.vbs echo WScript.quit
	
	
	>>%%i.vbs echo Public Function UTF8Encode^(szString^)
	>>%%i.vbs echo Dim szChar,szTemp,szCode,szHex,szBin,iCount1,iCount2,iStrLen1,iStrLen2,lResult,lAscVal
	>>%%i.vbs echo szString = Trim^(szString^)
	>>%%i.vbs echo iStrLen1 = Len^(szString^)
	>>%%i.vbs echo For iCount1 = 1 To iStrLen1
	>>%%i.vbs echo     szChar = Mid^(szString, iCount1, 1^)
	>>%%i.vbs echo     lAscVal = AscW^(szChar^)
	>>%%i.vbs echo     If lAscVal ^>= ^&H0 And lAscVal ^<= ^&HFF Then
	>>%%i.vbs echo         If ^(lAscVal ^>= ^&H30 And lAscVal ^<= ^&H39^) or ^(lAscVal ^>= ^&H41 And lAscVal ^<= ^&H5A^) or ^(lAscVal ^>= ^&H61 And lAscVal ^<= ^&H7A^) Then
	>>%%i.vbs echo             szCode = szCode ^& szChar
	>>%%i.vbs echo         Else
	>>%%i.vbs echo             szCode = szCode ^& "%%" ^& Hex(AscW^(szChar^)^)
	>>%%i.vbs echo         End If
	>>%%i.vbs echo     Else
	>>%%i.vbs echo         szHex = Hex^(AscW^(szChar^)^)
	>>%%i.vbs echo         iStrLen2 = Len^(szHex^)
	>>%%i.vbs echo         For iCount2 = 1 To iStrLen2
	>>%%i.vbs echo             szChar = Mid^(szHex, iCount2, 1^)
	>>%%i.vbs echo             szBin = szBin ^& Mid^("0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;", CLng^( "&H" ^& szChar^) * 5 + 1, 4^)
	>>%%i.vbs echo         Next
	>>%%i.vbs echo         szTemp = "1110" ^& Left^(szBin, 4^) ^& "10" ^& Mid^(szBin, 5, 6^) ^& "10" ^& Right^(szBin, 6^)
	>>%%i.vbs echo         For iCount2 = 1 To 24
	>>%%i.vbs echo             If Mid^(szTemp, iCount2, 1^) = "1" Then
	>>%%i.vbs echo                 lResult = lResult + 1 * 2 ^^ ^(24 - iCount2^)
	>>%%i.vbs echo                 Else: lResult = lResult + 0 * 2 ^^ ^(24 - iCount2^)
	>>%%i.vbs echo             End If
	>>%%i.vbs echo         Next
	>>%%i.vbs echo         szTemp = Hex^(lResult^)
	>>%%i.vbs echo         szCode = szCode ^& "%%" ^& Left^(szTemp, 2^) ^& "%%" ^& Mid^(szTemp, 3, 2^) ^& "%%" ^& Right^(szTemp, 2^)
	>>%%i.vbs echo     End If
	>>%%i.vbs echo     szBin = vbNullString
	>>%%i.vbs echo     lResult = 0
	>>%%i.vbs echo Next
	>>%%i.vbs echo UTF8Encode = szCode
	>>%%i.vbs echo End Function 
	
	
	
	
	if "%%i" geq "阿" set chhz=汉字!hz!\ & set /a hz_count=hz_count+1&set /a hz=hz_count / menu + 1
	if "%%i" leq "阿" set chhz=英文!ch!\ & set /a ch_count=ch_count+1&set /a ch=ch_count / menu + 1
	if not exist !chhz! md !chhz!
	echo move %%i.vbs !chhz!,汉字计数=!hz_count!,汉字=!hz!,字符计数=!ch_count!,字符=!ch!.
	move %%i.vbs !chhz! >nul 2>nul
	)


2009-7-8 16:13
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: