苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9195|回复: 9

[其他] Session怎么获得?

[复制链接]
发表于 2013-12-19 20:47:45 | 显示全部楼层 |阅读模式
C# post登陆dede每次得到的Session都是不一样的,而用抓包工具每次返回的Session都是一样的,就算登陆成功也不会改变,只有清空了SESSION才会改变。
比如说没有成功登陆前获得Session是233ec8502edaa126e0a64e73b46760da,放在C#的程序里面提示没有登陆,而抓包工具成功登陆后,C#才会显示登陆成功
请问这是什么原理?怎么获得正确的Session呢?谢谢


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-12-19 20:56:33 | 显示全部楼层
@站长苏飞   飞哥帮帮忙
发表于 2013-12-20 08:07:26 | 显示全部楼层
你提供下登录的包信息,要成功登录的。
有可能是你没有登录成功造成的,C#的Http是不会保持的,你获取Session的只是一个ID,你需要带着这本次请求成功获取到的Cookie才要吧继续访问,你每请求一次变化一个Session这是正常的。因为他不会保持
 楼主| 发表于 2013-12-21 01:28:52 | 显示全部楼层
站长苏飞 发表于 2013-12-20 08:07
你提供下登录的包信息,要成功登录的。
有可能是你没有登录成功造成的,C#的Http是不会保持的,你获取Sess ...

有登陆成功的,抓包的时候返回了两个POST页面数据
TM截图未命名.png
第1个,
Stream:
[HTML] 纯文本查看 复制代码
POST /dede/dede/login.php HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/msword, */*
Referer: http://localhost/dede/dede/login.php?gotopage=%2Fdede%2Fdede%2Findex.php
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost
Content-Length: 93
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=b4183b61a3c6fadbfa7b325a0dc479dc; DedeUserID=1; DedeUserID__ckMd5=c4c330dc98dafdab; DedeLoginTime=1387560096; DedeLoginTime__ckMd5=26d51589eb19966e

gotopage=%2Fdede%2Fdede%2Findex.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=admin


Content:
[HTML] 纯文本查看 复制代码
<html>
<head>
<title>DedeCMS提示信息</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<base target='_self'/>
<style>div{line-height:160%;}</style></head>
<body leftmargin='0' topmargin='0' bgcolor='#FFFFFF'>
<center>
<script>
var pgo=0;
funct


第2个,
Stream:
[HTML] 纯文本查看 复制代码
POST /dede/dede/login.php HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/msword, */*
Referer: http://localhost/dede/dede/login.php?gotopage=%2Fdede%2Fdede%2Findex.php
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost
Content-Length: 110
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=b4183b61a3c6fadbfa7b325a0dc479dc; DedeUserID=1; DedeUserID__ckMd5=c4c330dc98dafdab; DedeLoginTime=1387560156; DedeLoginTime__ckMd5=5e583733c84280e6

gotopage=%2Fdede%2Fdede%2Findex.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=admin&sm1=%B5%C7%C2%BC


Content:
[HTML] 纯文本查看 复制代码
<html>
<head>
<title>DedeCMS提示信息</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<base target='_self'/>
<style>div{line-height:160%;}</style></head>
<body leftmargin='0' topmargin='0' bgcolor='#FFFFFF'>
<center>
<script>
var pgo=0;
function JumpUrl(){
if(pgo==0){ location='/dede/dede/index.php'; pgo=1; }
}
document.write("<br /><div style='width:450px;padding:0px;border:1px solid #DADADA;'><div style='padding:6px;font-size:12px;border-bottom:1px solid #DADADA;background:#DBEEBD url(/dede/plus/img/wbg.gif)';'><b>DedeCMS 提示信息!</b></div>");
document.write("<div style='height:130px;font-size:10pt;background:#ffffff'><br />");
document.write("成功登录,正在转向管理管理主页!");
document.write("<br /><a href='/dede/dede/index.php'>如果你的浏览器没反应,请点击这里...</a><br/></div>");
setTimeout('JumpUrl()',1000);</script>
</center>
</body>
</html>


 楼主| 发表于 2013-12-21 22:15:12 | 显示全部楼层
已经用webBrowser获取到了cookie,不过就是感觉有点慢
 楼主| 发表于 2013-12-22 20:37:24 | 显示全部楼层
站长苏飞 发表于 2013-12-20 08:07
你提供下登录的包信息,要成功登录的。
有可能是你没有登录成功造成的,C#的Http是不会保持的,你获取Sess ...

已经登陆成功 就是发布文章不行,返回的数据好奇怪,也没提示失败。@站长苏飞  飞哥有空帮我看看可以吗,谢谢。
C#代码:
[C#] 纯文本查看 复制代码
 HttpHelper tool = new HttpHelper();
HttpItem item = new HttpItem();
HttpResult result = new HttpResult();
item.Method = "POST";
item.URL = "http://localhost/dede/dede/article_add.php";
item.Postdata = "typeid=1&channelid=1&title=sssssssss&body=dddddddddd";
item.Cookie = MainCookie.Cookie;
result = tool.GetHtml(item);
richTextBoxEx1.AppendText("\n" + result.Html);


Httphelper返回的html是一个添加文章的页面,不知为什么会返回这样的数据,也没提示失败之类的。

抓包数据:
[HTML] 纯文本查看 复制代码
POST /dede/dede/article_add.php HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/msword, */*
Referer: http://localhost/dede/dede/article_add.php?channelid=1&cid=1
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0)
Content-Type: multipart/form-data; boundary=---------------------------7dd2469a0640
Accept-Encoding: gzip, deflate
Host: localhost
Content-Length: 3600
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=6693d35427a1d24f9cb2ff0d2f9c93e2; wp-settings-time-1=1387629544; DedeUserID=1; DedeUserID__ckMd5=c4c330dc98dafdab; DedeLoginTime=1387713887; DedeLoginTime__ckMd5=d5e47cf8ae5d9a27; ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1%26cid%3D1

-----------------------------7dd2469a0640
Content-Disposition: form-data; name="channelid"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="dopost"

save
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="title"

ssssssssss
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="shorttitle"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="redirecturl"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="tags"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="weight"

7
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="picname"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="litpic"; filename=""
Content-Type: application/octet-stream


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="source"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="writer"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="typeid"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="typeid2"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="keywords"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="autokey"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="description"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="dede_addonfields"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="remote"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="autolitpic"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="needwatermark"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="sptype"

hand
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="spsize"

5
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="body"

ddddddddd
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="voteid"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="notpost"

0
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="click"

114
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="sortup"

0
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="color"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="arcrank"

0
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="money"

0
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="pubdate"

2013-12-22 20:02:26
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="ishtml"

1
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="filename"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="templet"


-----------------------------7dd2469a0640
Content-Disposition: form-data; name="imageField.x"

34
-----------------------------7dd2469a0640
Content-Disposition: form-data; name="imageField.y"

8
-----------------------------7dd2469a0640--

发表于 2013-12-22 21:10:50 | 显示全部楼层
这是multipart/form-data格式的数据你SOSO本站我记得有文章,这个问题我印象中解决过
 楼主| 发表于 2013-12-23 14:31:48 | 显示全部楼层
站长苏飞 发表于 2013-12-22 21:10
这是multipart/form-data格式的数据你SOSO本站我记得有文章,这个问题我印象中解决过

已经看过http://www.sufeinet.com/thread-7109-1-1.html 这篇文章
按照文中的方法还是不行,返回的html还是和之前的一样,返回的是一个填写发布文章的页面

[C#] 纯文本查看 复制代码
 HttpHelper tool = new HttpHelper();
HttpItem item = new HttpItem();
HttpResult result = new HttpResult();
//这里生成的bianj边界符和抓包返回的长度不一样
string bianj = DateTime.Now.Ticks.ToString("x");
//抓包返回的边界符
string bianjie = "7dd1425804bc";
//发布的频道ID
string channelid = string.Format("-----------------------------{0}{1}Content-Disposition: form-data; name=\"channelid\"{2}{3}{4}", bianjie, "\r\n", "\r\n\r\n", "1", "\r\n");
//发布的栏目ID
string typeid = string.Format("-----------------------------{0}{1}Content-Disposition: form-data; name=\"typeid\"{2}{3}{4}", bianjie, "\r\n", "\r\n\r\n", "1", "\r\n");
//发布的文章标题
string title = string.Format("-----------------------------{0}{1}Content-Disposition: form-data; name=\"title\"{2}{3}{4}", bianjie, "\r\n", "\r\n\r\n", "tttttttttt", "\r\n");
//发布的文章内容
string body = string.Format("-----------------------------{0}{1}Content-Disposition: form-data; name=\"body\"{2}{3}{4}", bianjie, "\r\n", "\r\n\r\n", "bbbbbbbbbb", "\r\n");
//结束符
string stop = string.Format("-----------------------------{0}--{1}", bianjie, "\r\n");
string postda = channelid + typeid + title + body + stop;
item.Method = "POST";
item.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/msword, */*";
item.ContentType = string.Format("multipart/form-data; boundary=---------------------------{0}", bianjie);
item.URL = "http://localhost/dede/dede/article_add.php";
item.Postdata = postda;
item.Cookie = MainCookie.Cookie;
result = tool.GetHtml(item);
richTextBoxEx1.AppendText("\n" + result.Html);

 楼主| 发表于 2013-12-23 16:37:55 | 显示全部楼层
站长苏飞 发表于 2013-12-22 21:10
这是multipart/form-data格式的数据你SOSO本站我记得有文章,这个问题我印象中解决过

已经解决了,谢谢飞哥,刚才失败的原因是postdata的数据不全造成的
发表于 2013-12-23 17:12:06 | 显示全部楼层
sandy1231 发表于 2013-12-23 16:37
已经解决了,谢谢飞哥,刚才失败的原因是postdata的数据不全造成的

哦好的
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2025-4-20 12:19

© 2014-2021

快速回复 返回顶部 返回列表