• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

求模拟登陆分析,在线等!

enaking 2018-10-25 07:33:56
我新手,工作之余,尝试模拟分析。自己封装了一个简单的HttpHelper

HttpHelper httpHelper87 = new HttpHelper("http://ux87.com/");
这个服务器地址是传给请求标头的host的。
然后
string strHtml = httpHelper87.GetHtml("http://ux87.com/login.php");
pBox.Image = new System.Drawing.Bitmap(httpHelper87.GetHtmlToStream("http://ux87.com/imgcode.php", out ckcCookies));
ckcCookies是接收到的Cookie


然后输入验证码:
strTimeStamp = DateTimeToStamp(DateTime.Now);这个是时间截,单位秒

string strCookieDoAction = "PHPSESSID=" + ckcCookies["PHPSESSID"].Value +
";Hm_lvt_7d781f93d49f3f4bb9e93736f01feb3a="
+ strTimeStamp +"; Hm_lpvt_7d781f93d49f3f4bb9e93736f01feb3a=" + strTimeStamp;
string strPostDataDoAction = "username=enagen001&password=123456&codevalue="
+ txtCode1.Text.Trim() + "&rme=on&code=code&act=login";

string strHttpReturnDoAction = httpHelper87.GetHtmlPost
("http://ux87.com/DoAction.php",strPostDataDoAction,strCookieDoAction, out ckcCookiesDoAction);



string strCookieindex = strCookieDoAction + "; " + ckcCookiesDoAction["user_id"].ToString() + "; "
+ckcCookiesDoAction["user_name"].ToString();

string strReturnIndex = httpHelper87.GetHtml("http://ux87.com/index.php", strCookieindex);


到这里,都是没问题的,返回的信息都和ie抓取的数据保持一致。然后下面

string strTimeStampGame_Play = DateTimeToStamp(DateTime.Now);

string strCookieGame_Play = ckcCookies["PHPSESSID"].ToString() +
"; Hm_lvt_7d781f93d49f3f4bb9e93736f01feb3a="
+ strTimeStamp + "; Hm_lpvt_7d781f93d49f3f4bb9e93736f01feb3a=" + strTimeStampGame_Play + "; " +
ckcCookiesDoAction["user_id"].ToString() + "; " + ckcCookiesDoAction["user_name"].ToString();

CookieCollection ckcGame_Play;

string strReturnGame_Play = httpHelper87.GetHtml("http://ux87.com/game_play.php?id=50116",
strCookieGame_Play, out ckcGame_Play);


其返回的值的是没有登陆的状态,求解,最好能给一个分析的办法。求鱼及渔。谢谢高手们带我成长!
...全文
934 点赞 收藏 21
写回复
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
enaking 2018-11-08
好的,谢谢了,结贴
回复
wq1282 2018-11-07
我已经提供了例子,且能达到需求,你把例子中的"http://ux87.com/login.php"换成“http://ux87.com/game_play.php?id=50116”就可以了!
回复
enaking 2018-11-05
自己再顶一顶啊,,,,,
回复
enaking 2018-11-01
引用 15 楼 wq1282 的回复:
当你发现post完之后,返回的Head包含setcookie就代表登录成功了,再用这些Cookie去拉index.php是OK的。


谢谢大哥的的细心帮助,我post完了,然后进入http://ux87.com/index.php也是对的,但进入http://ux87.com/game_play.php?id=50116 信息就不对了。
谢谢大哥。我把分数加倍,真的谢了。
回复
引用 17 楼 Seilboy 的回复:
Fidder 有用过吗,如果你要做爬虫的话,装一个

网页操作-抓包
程序操作-抓包

自己去比较请求头参数,cookie区别

不做爬虫也可以装一个,我看你这个问题都问了好几天了,装一个试试,很容易找出问题原因
回复
Fidder 有用过吗,如果你要做爬虫的话,装一个

网页操作-抓包
程序操作-抓包

自己去比较请求头参数,cookie区别
回复
wq1282 2018-10-31
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Wed, 31 Oct 2018 09:49:18 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Set-Cookie: user_id=518879,user_name=enagen001,user_nick=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT,rme_user=enagen001
Server: Apache
X-Powered-By: PHP/5.3.27
Connection: close
Content-Type: text/html
Content-Length: 51


<meta HTTP-EQUIV=refresh Content='0;url=index.php'>
回复
wq1282 2018-10-31
当你发现post完之后,返回的Head包含setcookie就代表登录成功了,再用这些Cookie去拉index.php是OK的。
回复
wq1282 2018-10-31
''''代码是VB.NET的,相信你能看懂:
''''给分完事,注释够多


Imports CsharpHttpHelper

Public Class Form1
'
'采用了苏飞CsharpHttpHelper框架,NuGet可下载
'
'分析时所使用的神器为:HttpAnalyzer
'
'求模拟登陆分析,在线等!-CSDN论坛 https://bbs.csdn.net/topics/392467546
Dim hh As New CsharpHttpHelper.HttpHelper
Dim hi As New HttpItem
Dim hr As HttpResult
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

'获取验证码,同时也能获得Cookie,一举两得,一般网站都这么玩
hi.URL = "http://ux87.com/imgcode.php"
hi.Method = "GET"
hi.WebProxy = Nothing
hi.ResultType = [Enum].ResultType.StringByte
hi.AutoRedirectCookie = True
hi.ResultCookieType = [Enum].ResultCookieType.String
hi.Cookie = ""
hr = hh.GetHtml(hi)
Me.BackgroundImageLayout = ImageLayout.None
Me.BackgroundImage = HttpHelper.GetImage(hr.ResultByte)
Debug.Print(hr.Cookie)


End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'
'填写验证码,点击按钮后继续登录操作
'看样子验证码也很容易自动识别(二值化即黑白处理, 按现有规则就能识别出字符了)
'
'Post登录信息
hi.URL = "http://ux87.com/DoAction.php"
hi.Method = "POST"
hi.Postdata = "username=enagen001&password=123456&codevalue=" & TextBox1.Text & "&rme=on&code=code&act=login"
'如果密码中有特殊符号要先 UrlEncode 再用。
hi.PostDataType = [Enum].PostDataType.String
hi.Cookie = Split(hr.Cookie, ";")(0)

''''这里非常关键,如果没有这些头,服务器就知道你不是从浏览器访问的,其他网站POST也类似原理。
hi.ContentType = "application/x-www-form-urlencoded"
hi.Referer = "http://ux87.com/login.php"
hi.Header.Add("Origin", "http://ux87.com")
hi.Header.Add("Upgrade-Insecure-Requests", "1")

Debug.Print(hi.Cookie)
hr = hh.GetHtml(hi)
Debug.Print(hr.StatusCode)
Debug.Print(hr.Header.ToString)
Debug.Print(hr.Html)

hi.URL = "http://ux87.com/index.php"
hi.Method = "GET"
hi.Cookie &= "; " & hr.Cookie.Replace(",", ";")
Debug.Print(hi.Cookie)
hr = hh.GetHtml(hi)
Debug.Print(hr.StatusCode)
Debug.Print(hr.Header.ToString)
Debug.Print(hr.Html)


End Sub
End Class
回复
enaking 2018-10-30
引用 11 楼 xuzuning 的回复:
<!-- 登录前 start -->

<div class="index_login_20131027">

<form name="myLogin" action="DoAction.php" method="post">

<!-- <img src="images/i_tool_t.jpg" width="231" height="5" /> -->

<ul class="i_login_ul">
<li>帐 号:</li>
<li>密 码:</li>
</ul>
<ul class="i_login_ul1">

<input type="text" name="username" id="username" class="i_login_input" value="" />
<input type="password" name="password" id="password" class="i_login_input" />
<input type="checkbox" name="rme" id="rme" class="i_login_input1" /> <font class="i_login_text">记住登录帐号</font>

</ul>

<ul class="i_log_bot">

<table border="0" cellspacing="0" class="botton">

<tr><td class="botton_td"><a href="#" onclick="checkInput();">用户登录</a></td><td class="botton_td_r"></td></tr>

</table>

</ul>

<ul class="i_re_pass">

<a href="register.php" target="_blank" title="游戏用户注册">免费注册</a>

</ul>



<ul class="i_re_pass">

<font><a href="forgetpass.php" target="_blank" >忘记密码?</a></font>

</ul>

<!-- <img src="images/i_tool_b.jpg" width="231" height="6" /> -->



<input type="hidden" name="act" id="act" value="login" />

<input type='hidden' id='FromURL' name='FromURL' value='/'/>

</form>


这些我都看到,但我还是不知道我问题出在那。
回复
enaking 2018-10-29
自己顶一下啊。
回复
xuzuning 2018-10-29
	function checkInput(){

var flag = true;

if(document.myLogin.username.value.length == 0){

alert('用户名不得为空!');

flag = false;

}

if(flag && document.myLogin.password.value.length == 0){

alert('密码不得为空!');

flag = false;

}

if(flag) document.myLogin.submit();

}
回复
xuzuning 2018-10-29
<!-- 登录前 start -->

<div class="index_login_20131027">

<form name="myLogin" action="DoAction.php" method="post">

<!-- <img src="images/i_tool_t.jpg" width="231" height="5" /> -->

<ul class="i_login_ul">
<li>帐 号:</li>
<li>密 码:</li>
</ul>
<ul class="i_login_ul1">

<input type="text" name="username" id="username" class="i_login_input" value="" />
<input type="password" name="password" id="password" class="i_login_input" />
<input type="checkbox" name="rme" id="rme" class="i_login_input1" /> <font class="i_login_text">记住登录帐号</font>

</ul>

<ul class="i_log_bot">

<table border="0" cellspacing="0" class="botton">

<tr><td class="botton_td"><a href="#" onclick="checkInput();">用户登录</a></td><td class="botton_td_r"></td></tr>

</table>

</ul>

<ul class="i_re_pass">

<a href="register.php" target="_blank" title="游戏用户注册">免费注册</a>

</ul>



<ul class="i_re_pass">

<font><a href="forgetpass.php" target="_blank" >忘记密码?</a></font>

</ul>

<!-- <img src="images/i_tool_b.jpg" width="231" height="6" /> -->



<input type="hidden" name="act" id="act" value="login" />

<input type='hidden' id='FromURL' name='FromURL' value='/'/>

</form>
回复
enaking 2018-10-29
自己再顶一下,谢谢各位大牛。
回复
weixin_43539422 2018-10-28
试试看看自说
回复
如果你是想通过模拟登陆去刷什么东西的话,推荐可以使用C#中的WebBrowser或者Chrome内核,这样不仅可以自己定制的写一个浏览器,而且可以根据加载的网站去执行自己定义的js脚本。
回复
stherix 2018-10-26
做这个 ,研究下他的前端代码就可以了 一般网站判断同一个session,要么就是header里带token,要么是cookie里带token
回复
enaking 2018-10-26
等待高手,自己顶一个
回复
enaking 2018-10-26
引用 3 楼 stherix 的回复:
做这个 ,研究下他的前端代码就可以了

一般网站判断同一个session,要么就是header里带token,要么是cookie里带token


不知道从哪看起走,看了登陆按钮的checkInput()函数,都是简单的是否为空检查
回复
xuan.ye 2018-10-26
忍不住安利一下 spring.net 的 RestTemplate 使用: https://github.com/spring-projects/spring-net-rest/blob/master/examples/Spring.HttpMessageConverterQuickStart/src/Spring.HttpMessageConverterQuickStart/Program.cs 文档: http://www.springframework.net/rest/refdoc/resttemplate.html
回复
相关推荐
php模拟登陆的实现方法分析
主要介绍了php模拟登陆的实现方法,实例分析了snoopy与curl两种实现方法,具有一定参考借鉴价值,需要的朋友可以参考下
如何使用Python的Requests包实现模拟登陆
今天试了一下,模拟登陆个人网站。发现也比较简单。读懂本文需要对http协议和http会话有一定的理解。 注明:因为模拟登陆的是我的个人网站,所以以下代码对个人网站和账号密码做了处理。 网站分析 爬虫的必备第一步...
Java 模拟cookie登陆简单操作示例
主要介绍了Java 模拟cookie登陆简单操作,结合实例形式分析了Java 模拟cookie登陆的相关原理与基本实现技巧,需要的朋友可以参考下
JAVA上百实例源码以及开源项目源代码
多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本...
最新知乎模拟登陆过程分析
注意红色的名为sign_in的文件,这就是登陆请求的文件,故意将密码填写错误,便于观察。 在http的请求头中,包含了General,Response Headers,Request Headers ,From Data,From Data 一般是将表单内容用post...
基于java的模拟登陆小工具
为广大用户提供一个基于java的模拟登陆的小工具,参考使用,主要是通过分析请求类型,然后根据类型发送请求参数,实现代码模拟用户登陆,及获取响应信息的功能
python爬虫之模拟登陆csdn的实例代码
python模拟登陆网页主要使用到urllib、urllib2、cookielib及BeautifulSoup基本模块,当然进阶阶段我们还可以使用像requests更高级一点的模块。其中BeautifulSoup模块在匹配html方面,可以很好的代替re,使用起来...
基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
主要介绍了基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览的方法,以实例形式详细分析了WebClient模拟POST与GET登陆与浏览的过程,对于C#项目开发来说具有不错的参考借鉴价值,需要的朋友可以参考下
爬虫模拟登陆并爬取Github分析.pdf
爬虫模拟登陆并爬取Github分析.pdf
百度登陆协议分析!!!用libcurl来模拟百度登陆
有空就分析了下百度的登陆协议。 大家看代码:size_t CURLWriteDataCallbak(char *data, size_t size, size_t nmemb, string *writerData) { if (writerData == NULL) return 0; size_t len = size*nmemb; ...
PHP 模拟登陆功能实例详解
主要介绍了PHP 模拟登陆功能,结合实例形式详细分析了php基于curl的模拟表单登陆及session信息存储相关操作技巧,需要的朋友可以参考下
模拟登陆(三)--用session模拟登陆
session模拟登陆方法:1、用session并携带headers和data进行请求登陆接口2、请求成功后,session中会携带cookie信息,再通过session请求登陆后页面即可实现模拟登陆该篇文章不明白的留言,100多个爬虫、数据分析、...
Java面试题大全(2020版)
发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别?...
浏览器分析模拟登陆过程
原文地址:...想要实现使用某种语言,比如Python,C#,去实现模拟登陆网站的话,首先要做的事情就是使用某种工具,去分析本身使用浏览器去登陆网页的时候,其内部的
使用OKHttp模拟登陆知乎,兼谈OKHttp中Cookie的使用!
本文主要是想和大家探讨技术,让大家学会Cookie的使用,切勿做违法之事!很多Android初学者在刚开始学习的时候,或多或少都想自己搞个应用出来,把自己学的十八般武艺全都用在这个APP上,其实这个想法很好,项目驱动...
python模拟登陆新浪微博
用python实现了新浪微博的模拟登陆,新浪微博各种加密,各种跳转,详细分析登陆过程并实现!
PHP CURL实现模拟登陆并上传文件操作示例
主要介绍了PHP CURL实现模拟登陆并上传文件操作,结合实例形式分析了PHP使用curl进行模拟登陆与文件传输操作具体实现技巧,需要的朋友可以参考下
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
主要介绍了PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法,实例分析了php实用curl模拟登陆163邮箱的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
船坞登陆舰医疗救治平台模拟仿真分析.pdf
船坞登陆舰医疗救治平台模拟仿真分析.pdf
python3模拟登陆人人网(requests)
之前看别人一直模拟登陆人人... 首先,分析一下模拟登陆到底是什么,有的人可能会很迷惑,我知道爬虫有get请求啊,有post请求啊,这模拟登陆啥玩意啊,还要输入东西乱起八糟的。可能觉得很蒙蔽,但是我们反观一个po...
php实现微信模拟登陆、获取用户列表及群发消息功能示例
主要介绍了php实现微信模拟登陆、获取用户列表及群发消息功能,结合具体实例形式分析了php微信接口的相关调用与操作技巧,需要的朋友可以参考下
专利检索及分析模拟登陆(python)
登陆程序: #!/usr/bin/env python # -*- coding: UTF-8 -*- import requests import time import base64 codeurl = 'http://www.pss-system.gov.cn/sipopublicsearch/portal/login-showPic.shtml' proxies = { ...
详解爬虫模拟登陆的三种方法
摘要:在进行爬虫时,除了常见...本文以只需输入账号密码就能登录的桔子网为例,介绍模拟登录常用的 3 种方法。 POST 请求方法:需要在后台获取登录的 URL并填写请求体参数,然后 POST 请求登录,相对麻烦; ...
入门学习Linux常用必会60个命令实例详解doc/txt
它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。 -t vfstype:显示被加载文件系统的类型。 -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件...
Java带有验证码的模拟登陆
需求: 最近得到一个需求,需要模拟登陆网页,然后通过网页接口获取相应数据。一共两个网页,其中没有验证码的网页比较容易的模拟登陆成功。但是另一个带有验证码(图片)却总是登陆失败。代码:获取识别后的验证码...
python3.x爬虫 urllib和requests实现模拟登陆的具体步骤详解
对于为什么用模拟登陆不用我多说,有些网站只有你登陆进去之后才可以看到内容,而没登录的话爬下来的网页一般只有登陆界面的那一点,所以对于这种网站,就需要能够模拟登陆的状态去爬取页面信息 实现模拟登陆总体来...
测试开发笔记
测试开发笔记 第一章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 ...
模拟登陆CSDN——就是这么简单
模拟登陆CSDN——就是这么简单
ArcGIS for JavaScript
全面介绍ArcGIS for JavaScript 开发 让大家学会ArcGIS for JavaScript 开发
后备电池及储能电池巡检白皮书.pdf
后备电池及储能电池巡检白皮书,施耐德电气主编的,数据中心电池巡检白皮书。
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2018-10-25 07:33
社区公告

让您成为最强悍的C#开发者