ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: wcymiss

[原创] 不懂html也来学网抓(xmlhttp/winhttp+fiddler)

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-12 18:10 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
wcymiss 发表于 2014-11-12 18:09
是的,很有可能是在点击“确定”后才POST数据。你应该把从登录邮箱到发送邮件成功这样整个过程一起抓包。 ...

老师,我用字典和combobox做了一个按类网抓图书的东东,您有空看看
http://club.excelhome.net/thread-1162676-9-1.html    82楼

TA的精华主题

TA的得分主题

发表于 2014-11-12 18:13 | 显示全部楼层
wcymiss 发表于 2014-11-12 18:09
是的,很有可能是在点击“确定”后才POST数据。你应该把从登录邮箱到发送邮件成功这样整个过程一起抓包。 ...

是在浏览器中发邮件。
的确是在点击确定后可以抓到了。
万里长征开始第一步,有问题再请教您哈,谢谢

点评

不客气。  发表于 2014-11-12 18:14

TA的精华主题

TA的得分主题

发表于 2014-11-12 21:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 renahu 于 2014-11-13 08:03 编辑
wcymiss 发表于 2014-10-28 11:50
初识登录

登录其实没那么神秘。它也就是向服务器发送的一个POST请求。

奇怪,老师,登陆163,我怎么用fiddler找不到老师截图中的 session?

怎么也找不到 POST https://mail.163.com/entry/cgi/n ... ce=63_31_31_gz&uid=" & username & "@163.com

也就找不到下面红框中的: username=vbatest&password=12341234&password=
我干脆直接搜索“LOGIN SUCCESS”  还是没有

TA的精华主题

TA的得分主题

发表于 2014-11-13 08:02 | 显示全部楼层
wcymiss 发表于 2014-10-28 11:50
初识登录

登录其实没那么神秘。它也就是向服务器发送的一个POST请求。

学登陆真不顺啊,呵呵,是不是网易发现老师鄙视他,把邮箱改版了?
早上试了试:不知怎么了?

TA的精华主题

TA的得分主题

发表于 2014-11-13 08:48 | 显示全部楼层
renahu 发表于 2014-11-13 08:02
学登陆真不顺啊,呵呵,是不是网易发现老师鄙视他,把邮箱改版了?
早上试了试:不知怎么了?

把fiddler给关了,可以运行了
为什么执行这段代码后,不是提示“LOGIN SUCCESS”了吗?为什么刷新网易主页,上面依然显示“登陆”,并没显示已经登陆上啊?还是没明白网抓的“登陆”意思,按我理解就是一执行代码就自动登陆了?

点评

刷新网易主页没用的。浏览器未必能从你代码的xmlhttp中获取登录的cookie。  发表于 2014-11-13 09:05
这段代码执行后,立即窗口返回的信息里没有包含“LOGIN SUCCESS”字符串吗?你说的“提示”是什么意思?msgbox?  发表于 2014-11-13 09:03

TA的精华主题

TA的得分主题

发表于 2014-11-13 09:11 | 显示全部楼层
renahu 发表于 2014-11-13 08:48
把fiddler给关了,可以运行了
为什么执行这段代码后,不是提示“LOGIN SUCCESS”了吗?为什么刷新网易主 ...

立即窗口里面显示登陆成功了,可是打开网易主页,最上面那行还提示你登陆,如果登陆成功后应该显示邮箱地址的。还有就是您写的第一段登陆代码,我fiddler始终也抓不到,黄色session一大堆,但没有一个是您发的截图中的,搜“LOGIN SUCCESS”也没有,不过执行您写的那段代码,立即窗口还是提示成功的

点评

把你的session保存下发来看看。  发表于 2014-11-13 09:39

TA的精华主题

TA的得分主题

发表于 2014-11-13 11:06 | 显示全部楼层
本帖最后由 renahu 于 2014-11-13 11:23 编辑
wcymiss 发表于 2014-10-28 11:50
初识登录

登录其实没那么神秘。它也就是向服务器发送的一个POST请求。

首先我请历史记录,打开fiddler,然后按初识登录的讲解用老师的邮箱vbatest登陆:

这时网易主页显示:表示登陆成功

,然后在fiddler中搜索 vbatest,但是没有课程中的老师找到的 session

老师找到的session 的地址 :

但我始终找不到,我还试着搜索下面红框中的内容,也没有,搜索 LOGIN SUCCEED 同样没有,
也就是说老师课程中提到的那个 session,我这里找不到

然后我用执行老师课程中的登陆代码:
  1. Sub Main()
  2.     Const username As String = "vbatest"
  3.     Const password As String = "12341234"
  4.     Dim strText As String
  5.     Dim uid As String
  6.     uid = username & "@163.com"
  7.     With CreateObject("MSXML2.XMLHTTP")
  8.         .Open "POST", "https://mail.163.com/entry/cgi/ntesdoor?df=mail163_letter&funcid=loginone&iframe=1&passtype=1&product=mail163&race=63_31_31_gz&uid=" & username & "@163.com", False
  9.         .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  10.         .Send "savelogin=0&url2=http%3A%2F%2Fmail.163.com%2Ferrorpage%2Ferror163.htm&username=" & username & "&password=" & password & "&password="
  11.         strText = .getallresponseheaders
  12.         Debug.Print strText
  13.         strText = .responsetext
  14.         Debug.Print strText
  15.     End With
  16. End Sub
复制代码
我先关了fiddler(必须关上,否则出错:

然后退出邮箱:
这时网易主页显示的是:表示已经退出登陆

这时我执行代码,但这次立即窗口没有显示 LOGIN SUCCEED

不知道什么意思,登陆没成功
后来我用自己的邮箱名字和密码替换vbatest再执行代码,这回成功:

但,我发现成功了,主页还是显示让你登陆,不知道怎么回事:

难道用代码进行登陆,在主页上体现不出来吗?不会吧,老师您有空再试一试登陆网易
看还能不能找到那个session





TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-13 11:46 | 显示全部楼层
本帖最后由 wcymiss 于 2014-11-13 11:48 编辑
renahu 发表于 2014-11-13 11:06
首先我请历史记录,打开fiddler,然后按初识登录的讲解用老师的邮箱vbatest登陆:

这时网易主页显示: ...


先说抓包问题。
你抓到的这张图里,左上部分显示session是从第78条开始,你有没有移动它边上的滚动条,再往上翻看呢?
fiddler里的session是可以save的。你要是实在找不到,把session save了在帖子里作为附件发上来,我来找。

再说“LOGIN SUCCEED”:
这个只能在首次登录的时候显示。如果在登录状态下再次登陆,就会显示“LOGIN REUSE”,你只要查下REUSE这个单词的英文意思就能明白了。(还是没有养成百度的习惯啊,呵呵。。。)

还有代码登录后浏览器里仍然显示未登录:
我之前给你的帖子点评了,浏览器未必能使用xmlhttp的cookie。
代码里用xmlhttp后,登录的cookie保存在xmlhttp对象里,在此excel不关闭的情况下,用xmlhttp可继续进行对此网站的查询、发送操作。
但浏览器并未获取到xmlhttp中的cookie,所以,你打开浏览器,网站仍然显示的是未登录状态。

PS:
有时候浏览器可获取xmlhttp里的cookie的。为什么有时候可以有时候不行,这个问题我也很疑惑。

哦,还有fiddler开启的话程序会出错的问题:
这个问题我这里没有出现。这可能和你的fiddler版本、设置或系统环境有关。

TA的精华主题

TA的得分主题

发表于 2014-11-13 12:41 | 显示全部楼层
本帖最后由 renahu 于 2014-11-13 12:44 编辑
wcymiss 发表于 2014-11-13 11:46
先说抓包问题。
你抓到的这张图里,左上部分显示session是从第78条开始,你有没有移动它边上的滚动条, ...

吴老师,您好
一、第78条上面没有带黄色的了
二、关于显示“LOGIN REUSE”,好像执行代码登陆与网页登陆是两条线,相互不影响是吗?也就是说网页上虽然退出登陆了,但是用代码登陆的还没退出,再次执行代码就会出现“LOGIN REUSE”?后来我发现只要退出excel,再执行代码,就会出现“LOGIN_SUCCESS”

刚发现不是 “LOGIN SUCCEED” 是“LOGIN_SUCCESS”  我在下面这个session附件中搜了一下,第45文件中有
“LOGIN_SUCCESS”,但它看着不像要找的,您帮我看看吧 login.rar (1.17 MB, 下载次数: 6)
我搜代码中地址前面一段:https://mail.163.com/entry/cgi/  也没有





点评

bjyfcx@163.com,这个是你的邮箱吗?  发表于 2014-11-13 13:28
抓包前需要清除缓存、cookie等等,这个一开始就说过。我以为我已经不需要再提醒了。但你发上来的session前面部分的cookie中全是之前邮箱的信息。  发表于 2014-11-13 13:24

TA的精华主题

TA的得分主题

发表于 2014-11-13 13:09 | 显示全部楼层
我在搜房网,登陆后用fiddler搜我的用户名,只有三个GET的,怎么没有POST的?登陆方法不对,还是fiddler有问题?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 03:40 , Processed in 0.050798 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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