XMLHTTP高手请进,帮忙看一下这段代码为什么不能登录

松鼠 2005-11-05 08:09:54
<%
FUNCTION BytesToStr(vIn)
DIM strReturn
DIM i,ThisCharCode,NextCharCode
strReturn = ""
FOR i = 1 TO LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
IF ThisCharCode < &H80 THEN
strReturn = strReturn & Chr(ThisCharCode)
ELSE
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
END IF
NEXT
BytesToStr = strReturn
END FUNCTION

function PostData(strurl,strPostData,mReferer)
dim mXmlHttp
set mXmlHttp=Server.CreateObject("Microsoft.XMLHTTP")
mXmlHttp.open "POST",strurl,false

mXmlHttp.setRequestHeader "Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*"
mXmlHttp.setRequestHeader "Referer", mReferer
mXmlHttp.setRequestHeader "Accept-Language","zh-cn"
mXmlHttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
mXmlHttp.setRequestHeader "UA-CPU","x86"
mXmlHttp.setRequestHeader "Accept-Encoding","gzip, deflate"
mXmlHttp.setRequestHeader "User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"
mXmlHttp.setRequestHeader "Host","secsite.163.com"
mXmlHttp.setRequestHeader "Content-Length","62"
mXmlHttp.setRequestHeader "Connection","Keep-Alive"
mXmlHttp.setRequestHeader "Cache-Control","no-cache"
mXmlHttp.send strPostData
PostData=mXmlHttp.responseText

end function
str= PostData("https://secsite.163.com/cgi-bin/login","comname=demo888&pass=demo888&a=login&Submit=+","http://secsite.163.com/")
Response.Write BytesToStr(str)
%>
...全文
249 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shewontloveme 2005-11-22
  • 打赏
  • 举报
回复
怎样才能得到COOKIE呀~我也想知道>_<~
Shewontloveme 2005-11-20
  • 打赏
  • 举报
回复
试试看~能不能实现~
rawjim 2005-11-08
  • 打赏
  • 举报
回复
还有一个地方你注意一下,XMLHTTP发送cookie会失败的,这是微软的一个BUG。
请参考 http://support.microsoft.com/default.aspx?scid=kb;EN-US;q290899
lisoon 2005-11-08
  • 打赏
  • 举报
回复
xmlhttp好像要3.0以上才支持https,这个要到微软网站下载.
可以用GetAllResponseHeaders()来取得服务器信息。
以前不知道在哪看过贴子,好像要什么时间匹配,不懂,顶下。
thinkming 2005-11-08
  • 打赏
  • 举报
回复
这个问题我的确遇到过,,不过后来没有办法解决期侍有回案
rehearts 2005-11-08
  • 打赏
  • 举报
回复
单独在ie地址栏里面直接能提交上去吗?
松鼠 2005-11-08
  • 打赏
  • 举报
回复
谢谢上面的各位达人。这段代码可以登录HTTPS的,我试过登录九城的系统。现在我要怎么才能得到COOKIE?能不能给出代码?
webdevelop 2005-11-08
  • 打赏
  • 举报
回复
我也认为是Cookie的问题
rawjim 2005-11-08
  • 打赏
  • 举报
回复
下面这段是登陆浙江移动网站的代码片断,用PHP写的。不知道是否对你有帮助
<?php
session_start();
$uid=$_REQUEST["userName"];
$pwd=$_REQUEST["password"];

if ($uid!="" && $pwd!=""){
$host="211.140.32.131";
$port=80;
$uid=urlencode($uid);
$pwd=urlencode($pwd);
$receive="";
$result="";
$fp = @fsockopen($host, $port, $errno, $errstr, 30) or die("连接浙江移动服务器失败");
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /loginAction.do?userName=".$uid."&userPass=".$pwd." HTTP/1.1\r\n";
$out .= "Host: ".$host."\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$receive .=fgets($fp, 128);
if (strpos($receive, "用户名不存在")){
$result ="用户名不存在";
break;
}elseif (strpos($receive,"密码不正确")){
$result ="密码不正确";
break;
}elseif (strpos($receive,"LOGINCOOKIE=") && strpos($receive,"版权所有")){
// success
$pos=strpos($receive,"LOGINCOOKIE=");
$_SESSION["userID"]=substr($receive,$pos+12,6);
$_SESSION["userName"]=$_REQUEST["userName"];
$pos=strpos($receive,"资料修改");
$_SESSION["mobile"]=substr($receive,$pos-301,11);
init($_SESSION["userID"]);
Header("Location: index.php");
break;
exit;
}
}
fclose($fp);
}
}
// 初始化文件和文件夹
function init($userid){
// 检查目录是否存在,如不存在,则建立
if (!is_dir("data"))mkdir("data", 0777);
$fname="data/".$userid.".abk";
if (!file_exists($fname)) {$fp=fopen($fname, "w");fclose($fp);chmod($fname, 0777 );}
$fname="data/".$userid.".msg";
if (!file_exists($fname)) {$fp=fopen($fname, "w");fclose($fp);chmod($fname, 0777 );}
$fname="data/".$userid.".nte";
if (!file_exists($fname)) {$fp=fopen($fname, "w");fclose($fp);chmod($fname, 0777 );}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>浙江移动免费短信发送 - 登录</title>
<style>
a,body,table,td{font-size:12px}
</style>
<script>
function doSubmit(){
if (form1.userName.value==""){
alert("请输入"用户名"")
form1.userName.focus()
return false
}else if(form1.password.value==""){
alert("请输入"密码"")
form1.password.focus()
return false
}else{
return true
}
}
</script>
</head>

<body>
<form name="form1" method="post" action="login.php" target="_self" onSubmit="return doSubmit()">
<table width="280" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#7691C7">
<tr align="center">
<td colspan="2" height="22"><strong><font color="#FFFFFF">用户登录</font></strong></td>
</tr>
<?php if ($_SESSION["userID"]=="") { ?>
<?php if ($result!=""){ ?>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="2" height="35"><font color="#FF0000"><?php echo $result; ?></font></td>
</tr>
<?php } ?>
<tr bgcolor="#FFFFFF">
<td width="80" height="22" align="center">用户名</td>
<td> 
<input name="userName" type="text" style="width:160px" value="13634162128" maxlength="30"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="80" height="22" align="center">密 码</td>
<td> 
<input name="password" type="password" style="width:160px" value="" maxlength="30"></td>
</tr>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="2" height="35"><input type="submit" name="Submit" value="登录" style="width:60px;">
</td>
</tr>
<?php }else{ ?>
<tr bgcolor="#FFFFFF">
<td colspan="2" height="35"><br>    用户 <font color="#FF0000"><?php echo $_SESSION["userName"]; ?> </font>已经登录<br>
<ul>
<li><a href="logout.php">注销登录</a><br><br></li>
<li><a href="index.php">转到短信主页</a></li>
</ul>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
rawjim 2005-11-08
  • 打赏
  • 举报
回复
上次我也做了个跨域登陆的东东,在用ASP的过程中,发现cookie发送不过去,接收倒是可以。
后来改用PHP写,才实现功能。
而你现在有一点很不同的是,使用HTTPS,能否通用,我就不能确信了。
是是非非 2005-11-07
  • 打赏
  • 举报
回复
在服务器端的ASP里面怎么读取本地Cookie ~~

:) 才想到这个问题~
是是非非 2005-11-07
  • 打赏
  • 举报
回复
XMLHTTP是否支持HTTPS,这个问题偶也不懂,期待高手出现~

是是非非 2005-11-07
  • 打赏
  • 举报
回复
HTTPS的东西没搞过,不知道有什么特别的

对于登录这样的玩意,首先是模拟UserAgent和Referer来发送一个登录请求到他们的通行证页面
并根据返回的页面信息来判断是否登录成功

如果对方服务器是用Cookie验证的,那么现在你在这个网站的Cookie已经被记录到本机
在下一步的继续操作时,先读取本机的Cookie ,然后把整个Cookie作为一个HTTP头
并同时设置UserAgent和Referer头,发送过去就可以了

也有一些不采用Cookie验证的
不过原理都是一样,它要什么咱就发什么过去
松鼠 2005-11-06
  • 打赏
  • 举报
回复
有没有哪位达人能帮忙解决一下哦
Lapuasi 2005-11-05
  • 打赏
  • 举报
回复
strPostData 被 send 后是不是被编码了?我的也有这个问题,别说登陆别的站,就连自己的处理页面也取不到数据...
松鼠 2005-11-05
  • 打赏
  • 举报
回复
参数是对的,网易的系统登录后URL要转向,网址后还有一个sid参数,这个参数很重要
guoweidong 2005-11-05
  • 打赏
  • 举报
回复
你用帐号直接登陆看看.再说,你那个参数好像也不对啊.
username=demo888&pass=demo888
就这两个参数

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧