http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

楼主: 站长苏飞

[例子] C#使用HttpHelper类实现自动登录网易通行证,126,126登录的方法

[复制链接]
发表于 2012-12-14 22:46:45 | 显示全部楼层
得到一个 JSESSIONID= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;path=/


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2012-12-15 10:03:09 | 显示全部楼层
来瓶Beer 发表于 2012-12-14 22:46
得到一个 JSESSIONID= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;path=/

那只是SessionID,Session值是存储在服务器端的,我信息极少有人会把密码存在Session里或者Cookie里,都是只存储状态的,建议你去求助区另起一个帖子
发表于 2013-3-4 17:59:51 | 显示全部楼层
飞哥你好,小弟想问你个问题。我在写一个winform爬网工具,如果要爬一个要用户登录的网页,就像这个帖子中的163网页,用户在winform中填入网址,账号,密码。
现在的问题是:我想自动取得网站post数据的准确地址,而不是用火狐或者fiddler等第三方工具去人工抓取,不知道有什么办法可以,想请飞哥帮我想想如何实现自动化获取post地址,比较急,希望飞哥帮我看看,小弟万分感谢

 楼主| 发表于 2013-3-4 18:03:05 | 显示全部楼层
hug_bear_mophi 发表于 2013-3-4 17:59
飞哥你好,小弟想问你个问题。我在写一个winform爬网工具,如果要爬一个要用户登录的网页,就像这个帖子中的 ...

这个是不可能的,就算能也是一小部分,直接使用Form进交的可以,如果是使用Ajax或者是Js提交的就不行了,而且不同的网站千差万别的,我还无能无力,抱歉,呵呵
发表于 2013-3-4 18:12:05 | 显示全部楼层
admin 发表于 2013-3-4 18:03
这个是不可能的,就算能也是一小部分,直接使用Form进交的可以,如果是使用Ajax或者是Js提交的就不行了, ...

我使用你的webbrowser获取cookie方法,就是客户手动登录,然后得到cookie,再用这个cookie去爬网,但是cookie是有时效的,如果爬一个大型网页需要几个小时(按照网站的robot协议,能下载的资源都下载),那这个cookie有可能就会失效,所以才想能不能自动获得post地址以便于随时获得cookie。
如果把所有的request都保存下来,一个一个试,不知道这种方法可不可行,但又有新问题。。。怎么得到所以的request....不知飞哥有方法么...
 楼主| 发表于 2013-3-4 18:18:53 | 显示全部楼层
hug_bear_mophi 发表于 2013-3-4 18:12
我使用你的webbrowser获取cookie方法,就是客户手动登录,然后得到cookie,再用这个cookie去爬网,但是co ...

所有的可以使用抓包的方式,使用Socket就行,我写过一个关于百度抓取关键字的你在论坛查一下,
你说的如果安robot协议来的话需要登录的地方都是不能抓取的,你还做登录干什么,robot不可能规定抓取登录后页面内容的。自动获取基本是不可取的,因为好些网站是通过Js发送的,而不是直接请求,所你你需要先执行JS才能知道请求地址
 楼主| 发表于 2013-3-4 18:19:02 | 显示全部楼层
hug_bear_mophi 发表于 2013-3-4 18:12
我使用你的webbrowser获取cookie方法,就是客户手动登录,然后得到cookie,再用这个cookie去爬网,但是co ...

所有的可以使用抓包的方式,使用Socket就行,我写过一个关于百度抓取关键字的你在论坛查一下,
你说的如果安robot协议来的话需要登录的地方都是不能抓取的,你还做登录干什么,robot不可能规定抓取登录后页面内容的。自动获取基本是不可取的,因为好些网站是通过Js发送的,而不是直接请求,所你你需要先执行JS才能知道请求地址
发表于 2013-3-4 18:51:40 | 显示全部楼层
辛苦飞哥,得下班回家了,明天再试,感谢回复
 楼主| 发表于 2013-3-4 20:16:04 | 显示全部楼层
hug_bear_mophi 发表于 2013-3-4 18:51
辛苦飞哥,得下班回家了,明天再试,感谢回复

好的这是网址http://www.sufeinet.com/thread-1072-1-1.html
发表于 2013-3-5 19:09:44 | 显示全部楼层
admin 发表于 2013-3-4 20:16
好的这是网址http://www.sufeinet.com/thread-1072-1-1.html

飞哥,登录163的这个例子需要人工拼接URL,我把截取到的PostData存入HttpItem.Postdata中不好使,这个HttpItem.Postdata什么情况下可以直接赋值呢,下面是代码,麻烦飞哥看一下
[code=csharp]        private void btnEnter_Click(object sender, EventArgs e)
        {
            HttpItem item = new HttpItem()
            {
                //URL = "https://reg.163.com/logins.jsp?url=&product=&savelogin=&outfoxer=&domains=" +
                //"&syscheckcode=034715eb7e1f16cd332e41f95e3303204ceadd7e&username="
                //+ txtUserName.Text.Trim() + "&password="
                //+ txtPwd.Text.Trim() + "&Submit=",
                URL = "https://reg.163.com/logins.jsp",
                Postdata = "url=&product=&savelogin=&outfoxer=&domains="
                + "&syscheckcode=034715eb7e1f16cd332e41f95e3303204ceadd7e&username="
                    + txtUserName.Text.Trim() + "&password="
                    + txtPwd.Text.Trim() + "&Submit=",
                Referer = "https://reg.163.com/logins.jsp",
                Method = "post",
            };
            HttpHelper http = new HttpHelper();
            string html = http.GetHtml(item);
            string cookie = item.Cookie;
            lblMessages.Text = "cookie:" + cookie + "\r\n\r\n";
            item.URL = "http://reg.163.com/Main.jsp";
            lblMessages.Text += http.GetHtml(item);
        }[/code]
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-22 19:40

© 2014-2021

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