请教一个模拟登陆的问题!!求高手帮忙!!

Ternence 2014-12-22 09:37:43
模拟登陆需求具体流程是这样的:
1.访问登陆页面。
2.返回页面里 某个 input的值(用于每次登陆传参用,此值为动态的,每次打开页面都会变化)。
3.模拟post登陆提交。
4.接收返回页面。
————————————————
实现过程与问题:
1.正常模拟访问页面。
2.正常返回页面,(抓取所需动态值)。
3.模拟提交(问题出现在这,因为1已经访问过了页面,而3步的模拟提交还要访问一次,所有造成了所需的 input动态值发生变化了。)
问题是:如何在 这4步骤的流程中 只模拟访问一次登陆页面 就能实现这些步骤呢?或者有其他什么更好的方法解决这个问题呢? 小弟请教各位大神帮帮忙!提前谢了!!在线等!!
...全文
410 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ternence 2014-12-23
  • 打赏
  • 举报
回复
谢谢各位帮忙,问题已经解决,方法是 将Request的KeepAlive属性设置成true,建立永久性连接。
Ternence 2014-12-22
  • 打赏
  • 举报
回复
引用 7 楼 QQ234788028 的回复:
[quote=引用 5 楼 alikeyount 的回复:] [quote=引用 4 楼 QQ234788028 的回复:] 200 需要联系
200分?小弟只有100来个分。。。[/quote] 200RMB茶钱[/quote] 您喝这茶,这对小弟来说 是1个星期的生活费啊!抱歉,给不起啊。
Ternence 2014-12-22
  • 打赏
  • 举报
回复
引用 6 楼 lc2737 的回复:
访问登录浏览器应该会在本地生成相应的SessionID储存在本地, 你的模拟提交有没有试过Ajax提交?
请教具体该怎么存储操作呢?
QQ234788028 2014-12-22
  • 打赏
  • 举报
回复
引用 5 楼 alikeyount 的回复:
[quote=引用 4 楼 QQ234788028 的回复:] 200 需要联系
200分?小弟只有100来个分。。。[/quote] 200RMB茶钱
ajaxfeifei 2014-12-22
  • 打赏
  • 举报
回复
访问登录浏览器应该会在本地生成相应的SessionID储存在本地, 你的模拟提交有没有试过Ajax提交?
Ternence 2014-12-22
  • 打赏
  • 举报
回复
引用 4 楼 QQ234788028 的回复:
200 需要联系
200分?小弟只有100来个分。。。
QQ234788028 2014-12-22
  • 打赏
  • 举报
回复
200 需要联系
Ternence 2014-12-22
  • 打赏
  • 举报
回复
换个格式。

HttpWebRequest req=WebRequest.Create(url) as HttpWebRequest;//(1.访问)
HttpWebResponse res=req.GetResponse() as HttpWebResponse;//(2.返回,并接收抓取想要的 登陆页面 秘钥 值)
HttpWebRequest req=WebRequest.Create(url) as HttpWebRequest;//(3.看下面介绍)
(3.访问并模拟提交post登陆。在提交post之前必须有这个访问(不加这句访问会提示报错:写入开始后不能设置此属性(不能给req赋值) ),但是这次一访问就会更换动态秘钥了,我之前获取的也就不正确了。)
Ternence 2014-12-22
  • 打赏
  • 举报
回复
简单贴下代码:

httpwebrequest req=webrequest.create(url) as httpwebrequest;//(1.访问)
httpwebresponse res=req.getresponse() as httpwebresponse;//(2.返回,并接收抓取想要的 登陆页面 秘钥 值)
httpwebrequest req=webrequest.create(url) as httpwebrequest;//(3.访问并模拟提交post登陆。在提交post之前必须有这个访问(不加这句访问会提示报错:写入开始后不能设置此属性(不能给req赋值) ),但是这次一访问就会更换动态秘钥了,我之前获取的也就不正确了。)
Ternence 2014-12-22
  • 打赏
  • 举报
回复
求高手!!在线等!!
king4323210 2014-12-22
  • 打赏
  • 举报
回复
没听懂,流程应该简化
吾友客 2014-12-22
  • 打赏
  • 举报
回复
引用 14 楼 moshoutest 的回复:
不会出现你描述的那个问题,问题要么出在你cookie上面(如部分为js设置cookie你post时并没有带上),要么就是出在你post的data上面(抓包看下是否和正常访问传参相同),还有就你没看清返回的页面,比如 页尾有个js跳转代码,比如页头有个 alter错误提示。。。。
我也这么认为的
ajaxfeifei 2014-12-22
  • 打赏
  • 举报
回复
引用 14 楼 moshoutest 的回复:
不会出现你描述的那个问题,问题要么出在你cookie上面(如部分为js设置cookie你post时并没有带上),要么就是出在你post的data上面(抓包看下是否和正常访问传参相同),还有就你没看清返回的页面,比如 页尾有个js跳转代码,比如页头有个 alter错误提示。。。。
我也这么认为。
moshoutest 2014-12-22
  • 打赏
  • 举报
回复
不会出现你描述的那个问题,问题要么出在你cookie上面(如部分为js设置cookie你post时并没有带上),要么就是出在你post的data上面(抓包看下是否和正常访问传参相同),还有就你没看清返回的页面,比如 页尾有个js跳转代码,比如页头有个 alter错误提示。。。。
Ternence 2014-12-22
  • 打赏
  • 举报
回复
补充一下 httpwebrequest.CookieContainer co = new HttpCookieContainer();
Ternence 2014-12-22
  • 打赏
  • 举报
回复
引用 11 楼 dongxinxi 的回复:
httpwebrequest.CookieContainer co= new HttpCookieContainer();然后获取response的Cookie(登陆凭证),下次请求的时候,带上这个凭证
我是这么写的: httpwebrequest.CookieContainer = new HttpCookieContainer(); 第一次请求(用于获取页面动态key): HttpWebRequest req=WebRequest.Create(url) as HttpWebRequest; req.CookiceContainer=co; 第二次请求(用于post提交) HttpWebRequest req=WebRequest.Create(url) as HttpWebRequest; req.CookiceContainer=co; 返回页面。 然后返回的 还是登陆页面。并不是登陆成功页面。(是不是还是 那个动态key传的值变了?)
  • 打赏
  • 举报
回复
httpwebrequest.CookieContainer = new HttpCookieContainer();然后获取response的Cookie(登陆凭证),下次请求的时候,带上这个凭证
Ternence 2014-12-22
  • 打赏
  • 举报
回复
求高手帮忙指教!!谢谢了!!在线等!!

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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