ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-28 16:42 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
本帖最后由 renahu 于 2014-11-28 16:44 编辑
renahu 发表于 2014-11-28 15:11
吴老师,ifrmid好像也不是随机数吧,他应该是:年月日时分秒帧+好像跟页数有关的数(比如第一页总是25), ...


呵呵,还真可以,ifrmid不变,只把xml中的页数改过来就可以翻页了,看来这个属于加密失败的吧,呵呵,我把它想得太复杂了,本想也提取一下函数,甚至JS文件,看来还是没有达到锻炼目的呀

顺便问一下老师,那xml那么长的一长串,想放进“” 可费了半天劲,一次放不进去,只能分段往里面粘贴,不知有什么好方法吗

点评

没有。  发表于 2014-12-1 10:09

TA的精华主题

TA的得分主题

发表于 2014-11-29 09:33 | 显示全部楼层
wcymiss 发表于 2014-11-26 21:53
可以登录的,只是你对登录的判定有问题。最后的responsetext里包含“欢迎您”字符串的话即为登录。

...

吴老师,虽然i动态参数frmid不用管,把它当成静态参数用照样可以抓出数据,但我还是想知道如何用这个网提供的函数生成这个动态参数的值,我主要是想学学如何提取这个函数来生成动态参数,主要是方法,能否麻烦老师给指点一下,谢谢

TA的精华主题

TA的得分主题

发表于 2014-11-30 15:56 | 显示全部楼层
本帖最后由 renahu 于 2014-11-30 16:02 编辑
wcymiss 发表于 2014-11-16 22:05
经过多次测试,发现也不是漏了两个参数的问题,是登录网站进行查询时,需要设置下发送头里的cookie。

...


又仔细阅读了一遍搜房网(我觉得163的肯定改版了,太难了)的登陆,发现winhttp。xmlhttp其实获取header里的cookie都是三个,内容完全一样,但最后验证只有winhttp成功,吴老师这是怎么回事?

后来我干脆把验证网页(查询个人信息)的整个cookie代码全部复制粘贴到 send后面,还是winhttp成功,XMLHTTP就是验证不成功,好奇怪呀

点评

setRequestHeader "Cookie" 对 xmlhttp无效。这个知识点在cookie那节里有说的。491楼我也说了,这个网站需要设置cookie。  发表于 2014-12-1 09:29

TA的精华主题

TA的得分主题

发表于 2014-12-1 08:42 | 显示全部楼层
wcymiss 发表于 2014-10-29 16:27
复杂登录二:58同城登录

吴老师,58的登陆代码执行有误,我发现老师把网址输错了,http后面多了个s(是不是58给改了吧?),另外p1,p2的计算也出现错误,请老师再执行看看

点评

https或http都可以的。  发表于 2014-12-1 10:11
网站改版了。那个js文件名变了。你自己改一下。  发表于 2014-12-1 09:25

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-1 10:08 | 显示全部楼层
renahu 发表于 2014-11-29 09:33
吴老师,虽然i动态参数frmid不用管,把它当成静态参数用照样可以抓出数据,但我还是想知道如何用这个网提 ...
  1. Sub Main()
  2.     Static ruidIndex As Integer
  3.     Dim strText As String
  4.     With CreateObject("MSXML2.XMLHTTP")
  5.         .Open "GET", "http://www.rtshutu.com/basedata/format/release/aspx/1aecf7e5000b940bce.aspx?&pinst=1ad691ca0000cc0bce", False
  6.         .Send
  7.         strText = .responseText
  8.     End With
  9.     With CreateObject("HTMLFILE")
  10.         .write strText & "<script>var ruidIndex=" & ruidIndex & "</script>"
  11.         Debug.Print .parentWindow.eval("GenerateRUID()")
  12.         ruidIndex = ruidIndex + 1
  13.     End With
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-12-1 10:13 | 显示全部楼层
wcymiss 发表于 2014-12-1 10:08

谢谢老师,顺便问一下,这个单词ruid什么意思?是什么缩写?网上查不到,ruidIndex是。。索引,记录什么的?

点评

ruidIndex是函数GenerateRUID里用到的一个变量名。你没看函数GenerateRUID的具体内容?在fiddler里搜索 function GenerateRUID  发表于 2014-12-1 10:15

TA的精华主题

TA的得分主题

发表于 2014-12-1 10:21 | 显示全部楼层
renahu 发表于 2014-12-1 10:13
谢谢老师,顺便问一下,这个单词ruid什么意思?是什么缩写?网上查不到,ruidIndex是。。索引,记录什么的 ...

看了(许多条件语句),就是没看懂这个参数是干嘛的,我执行了您提供的代码,感觉像是登陆的次数

TA的精华主题

TA的得分主题

发表于 2014-12-1 10:24 | 显示全部楼层
renahu 发表于 2014-12-1 08:42
吴老师,58的登陆代码执行有误,我发现老师把网址输错了,http后面多了个s(是不是58给改了吧?),另外p ...

可是https时
    '获取主页面的源代码
    objXML.Open "GET", strHost & "/login", False
    objXML.Send   ‘这个地方就出错了,去掉s就好了

TA的精华主题

TA的得分主题

发表于 2014-12-1 10:39 | 显示全部楼层
本帖最后由 renahu 于 2014-12-1 11:09 编辑
wcymiss 发表于 2014-12-1 10:08


    '找到所需的第三个JS文件名并GET到缓存
    strText = objXML.responsetext
    CopyToClipbox (strText)
    arrJSFile(2) = Split(Split(strText, "try{var d=""")(1), """")(0) & Split(Split(strText, "just"":""")(1), """")(0) & "_102.js"
    objXML.Open "GET", arrJSFile(2), False
    objXML.Send

吴老师,第三个JS文件后面好像多了个 _102 ,现在p1,p2倒是通过了,但最后提示不成功,看来这个JS可能完全不同了,慢慢找吧

点评

p1、p2通过表示js文件正确。检查下你对登录是否成功的判断。  发表于 2014-12-1 13:03

TA的精华主题

TA的得分主题

发表于 2014-12-1 11:00 | 显示全部楼层
千呼万唤 终于等到了一个适合菜鸟的基础东东  谢谢楼主分享
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-7-1 13:40 , Processed in 0.044612 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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