注册 登录
编程论坛 VB6论坛

求助:如何获取 永硕e盘 文件的下载链接。

benbbs 发布于 2021-01-31 22:43, 4023 次点击
想读取 永硕e盘 上的 资源:即各目录下文件的实际下载地址。但搞了一天都没搞懂,为什么查看它源码时都看不到那些资源的链接?
例如我想读取http://venman.  上的资源。
1.要获得它目录列表名称。
2.要获得各目录下具体文件的名称及链接。


我在浏览器的查看源码中,看不到相关的信息,能力有限,没法从源文件中提取到需要的东西。

请高手帮忙实现,不胜感激!顺祝新年快乐,谢谢。

[此贴子已经被作者于2021-1-31 22:47编辑过]

17 回复
#2
yuma2021-02-01 08:19
可以操作网页元素、遍历class类来实现。
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

我写过这方面的代码,请参考:http://www.
#3
benbbs2021-02-01 20:20
首先非常感谢版主yuma的出手指点!我刚在360浏览器里查看代码也看到了它的链接,就是不知道如何通过VB获取到它们。
先拜读一下老大提供的参考,最终如果还是弄不出来还是得老大仗义出手,在此再次感谢版主!祝新春快乐!!
#4
yuma2021-02-02 08:57
链接地址可以看的到
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2021-2-2 09:06编辑过]

#5
benbbs2021-02-02 22:13
是的,在浏览器的元素查看里能看到相关的链接。我是想做个测试,用程序去读取上面的目录,并解析出各目录下所有文件的链接。
以后每次上传文件上去,链接都是动态变化的,每次用查看元素的方式去获得链接不太现实。

我目的是想把数据上传上去,然后用软件去读取判断,再自动下载下来。之前放在其它网址上,我用下面的方式就能获得相关的链接,但奇怪的是永硕e盘这么弄得不到链接。
它应该是把链接藏到其他地方了,能力有限,解析不出来。

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim x As Long
For x = 0 To WebBrowser1.Document.links.length - 1
    Debug.Print WebBrowser1.Document.links.Item(x)
Next x
Debug.Print "共有" & WebBrowser1.Document.links.length & "个链接。"
End Sub

拜读过老大给的的相关例子,还是搞不出来
#6
yuma2021-02-03 09:55
以下是http://venman.网页下,主要的可操作元素:

0.Class名称:     href值:javascript:;     标签值:设置目录排序方式
1.Class名称:actuatorn     href值:http://www.     标签值:[升级空间]
2.Class名称:jaml     href值:javascript:     标签值:如何编辑删除数据
3.Class名称:jaml     href值:http://www.     标签值:进入空间后台
4.Class名称:     href值:http://www.     标签值:广告招商
5.Class名称:     href值:javascript:;     标签值:关闭
6.Class名称:     href值:http://www.     标签值:独享IP 单窗单IP 动静态免费测
7.Class名称:     href值:http://www.     标签值:▉▉▉绝地魔兽DNF卡盟▉▉▉
8.Class名称:     href值:http://yufengip.     标签值:找游戏项目、工作室资源》点我
9.Class名称:     href值:http://www.     标签值:DNF魔兽原神天龙低价卡盟
10.Class名称:     href值:http://www.     标签值:488卡盟▉一张卡只赚一分钱
11.Class名称:     href值:http://www.     标签值:推广永硕E盘 获取分成
12.Class名称:ml     href值:javascript:;     标签值:数据
13.Class名称:ml     href值:javascript:;     标签值:程序

14.Class名称:     href值:javascript:;     标签值:增加目录
0.Input元素名称:xm     Value值:     placeholder值:
1.Input元素名称:bdgkpdlyb     Value值:on     placeholder值:
2.Input元素名称:bdbq     Value值:1     placeholder值:
3.Input元素名称:lyb_gly     Value值:on     placeholder值:
4.Input元素名称:lyb_zd     Value值:on     placeholder值:
5.Input元素名称:buly     Value值:提交留言     placeholder值:
6.Input元素名称:sutjbt     Value值: 增加目录      placeholder值:
7.Input元素名称:wjlx1     Value值:on     placeholder值:
8.Input元素名称:wjlx2     Value值:on     placeholder值:
9.Input元素名称:wjlx4     Value值:on     placeholder值:
10.Input元素名称:wjlx3     Value值:on     placeholder值:
11.Input元素名称:scbt2     Value值:     placeholder值:链接显示文字。必填项。
12.Input元素名称:teljdz     Value值:     placeholder值:链接的网址,必须填写完整网址。
13.Input元素名称:bulj     Value值:增加链接     placeholder值:
14.Input元素名称:scbt4     Value值:     placeholder值:文本标题,必填项
15.Input元素名称:tewb     Value值:     placeholder值:显示在标题后面,必填项
16.Input元素名称:buwz     Value值:增加文字项     placeholder值:
17.Input元素名称:tezml     Value值:     placeholder值:
18.Input元素名称:buzml     Value值:增加子目录     placeholder值:
19.Input元素名称:bdglymm     Value值:     placeholder值:
20.Input元素名称:sutjgl     Value值:登录     placeholder值:
21.Input元素名称:     Value值:空间设置     placeholder值:
22.Input元素名称:     Value值:空间设置     placeholder值:
23.Input元素名称:glytc     Value值:退出管理     placeholder值:
24.Input元素名称:buzx     Value值:在线列表     placeholder值:
25.Input元素名称:buxz     Value值:下载记录     placeholder值:
26.Input元素名称:buexit     Value值:退出系统     placeholder值:
0.textarea元素名称:nr     Value值:     placeholder值:未开放访客留言权限

[此贴子已经被作者于2021-2-3 11:12编辑过]

#7
yuma2021-02-03 11:55
只有本站会员才能查看附件,请 登录


工程--引用--勾选Microsoft Internet Controls
程序代码:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Dim IE As InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate "http://venman."
Do
Sleep 200
Loop Until IE.readyState = 4
Set elements = IE.Document.All
For i = 0 To elements.length - 1
If elements(i).className = "ml" Then
MsgBox "文件夹名称:" & elements(i).innerText
End If
Next
End Sub


文件夹都能遍历到了,遍历下面的文件就容易了。

通上我上一楼的信息,可以看出,文件夹都是名称为:ml的class值
知道了这点,我们通过VBS脚本遍历网页<a>标签,来到了Class值为ml的<a>标签中,直接拿标签名,就得到了文件夹名称。
由于VBS语法和VB6语法很接近,上面我将代码改成了VB6代码。
只有本站会员才能查看附件,请 登录


如何遍历文件夹下的文件名,你们自由发挥,别@我了。你们的问题愁死我了,要脱发了,你这问题我忙了一上午。


#8
benbbs2021-02-03 19:55
非常感谢yuma百忙中仗义出手!我研究研究,如果搞不出来还是@您,到时真脱发了,送你章光101生发水

刚试了一下,报错,是姿势不对么?

只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2021-2-3 20:07编辑过]

#9
yuma2021-02-03 20:22
工程--引用--勾选Microsoft Internet Controls

工程——引用,不是 工程——部件。代码没问题的,我测试过。
不需要往窗体添加控件。
#10
benbbs2021-02-03 22:11
回复 9楼 yuma
可以了,能获取了相关的文件夹。有个问题,为什么每次都会打开360浏览器,让它在后台获取不行么?
对了,那个文件夹下的遍历怎么搞,哈哈哈哈哈哈哈哈哈哈哈
#11
yuma2021-02-04 08:20
回复 10楼 benbbs
遍历是一个程序的连续操作

打开文件夹前(第一页面)和打开文件夹后(第二页面)的网页元素(群体)是不一样的。

打开文件夹前(第一页面)和打开文件夹后(第二页面)的网页地址却是一样的。

程序使用元素elements(i).click方法单击文件夹,从第一页面来到第二页面后,无法通过访问第二页面的网页地址获取第二页面的网页元素(群体)


无法取得新页面(第二页面)的元素(群体)实现遍历。

所以无法继续遍历下去,虽然第二页面下的元素勉强也可以操作。

这不是技术好解决的问题

或许,这个网站在设计上就不想让我们遍历它,因为第二页面A标签没有id值、Class值

下面是第二页面(“数据”文件夹)主要的可操作元素列表:

0.Class名称:   元素id:   href值:javascript:;   target值:   标签值:设置目录排序方式
1.Class名称:actuatorn   元素id:   href值:http://www.   target值:_blank   标签值:[升级空间]
2.Class名称:jaml   元素id:   href值:javascript:   target值:   标签值:如何编辑删除数据
3.Class名称:jaml   元素id:   href值:http://www.   target值:_blank   标签值:进入空间后台
4.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:广告招商
5.Class名称:   元素id:   href值:javascript:;   target值:   标签值:关闭
6.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:独享IP 单窗单IP 动静态免费测
7.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:DNF魔兽原神天龙低价卡盟
8.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:▉▉▉绝地魔兽DNF卡盟▉▉▉
9.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:488卡盟▉一张卡只赚一分钱
10.Class名称:   元素id:   href值:http://yufengip.   target值:_blank   标签值:找游戏项目、工作室资源》点我
11.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:推广永硕E盘 获取分成
12.Class名称:ml   元素id:   href值:javascript:;   target值:   标签值:数据
13.Class名称:   元素id:   href值:http://ys-j.   target值:_blank   标签值:B2.txt
14.Class名称:yyck   元素id:   href值:javascript:;   target值:   标签值:打开
15.Class名称:   元素id:   href值:http://ys-j.   target值:_blank   标签值:B1.txt
16.Class名称:yyck   元素id:   href值:javascript:;   target值:   标签值:打开
17.Class名称:   元素id:   href值:javascript:   target值:   标签值:【刷新】
18.Class名称:ml   元素id:   href值:javascript:;   target值:   标签值:程序
19.Class名称:   元素id:sutjbt2   href值:javascript:;   target值:   标签值:增加目录
20.Class名称:a1   元素id:   href值:javascript:   target值:   标签值:刷新目录
21.Class名称:   元素id:   href值:http://www.   target值:_blank   标签值:[举报]
0.Input元素名称:xm   Value值:   placeholder值:
1.Input元素名称:bdgkpdlyb   Value值:on   placeholder值:
2.Input元素名称:bdbq   Value值:1   placeholder值:
3.Input元素名称:lyb_gly   Value值:on   placeholder值:
4.Input元素名称:lyb_zd   Value值:on   placeholder值:
5.Input元素名称:buly   Value值:提交留言   placeholder值:
6.Input元素名称:sutjbt   Value值: 增加目录    placeholder值:
7.Input元素名称:wjlx1   Value值:on   placeholder值:
8.Input元素名称:wjlx2   Value值:on   placeholder值:
9.Input元素名称:wjlx4   Value值:on   placeholder值:
10.Input元素名称:wjlx3   Value值:on   placeholder值:
11.Input元素名称:scbt2   Value值:   placeholder值:链接显示文字。必填项。
12.Input元素名称:teljdz   Value值:   placeholder值:链接的网址,必须填写完整网址。
13.Input元素名称:bulj   Value值:增加链接   placeholder值:
14.Input元素名称:scbt4   Value值:   placeholder值:文本标题,必填项
15.Input元素名称:tewb   Value值:   placeholder值:显示在标题后面,必填项
16.Input元素名称:buwz   Value值:增加文字项   placeholder值:
17.Input元素名称:tezml   Value值:   placeholder值:
18.Input元素名称:buzml   Value值:增加子目录   placeholder值:
19.Input元素名称:bdglymm   Value值:   placeholder值:
20.Input元素名称:sutjgl   Value值:登录   placeholder值:
21.Input元素名称:   Value值:空间设置   placeholder值:
22.Input元素名称:   Value值:空间设置   placeholder值:
23.Input元素名称:glytc   Value值:退出管理   placeholder值:
24.Input元素名称:buzx   Value值:在线列表   placeholder值:
25.Input元素名称:buxz   Value值:下载记录   placeholder值:
26.Input元素名称:buexit   Value值:退出系统   placeholder值:
0.textarea元素名称:nr   Value值:   placeholder值:未开放访客留言权限

关上上楼代码:
Set IE = CreateObject("InternetExplorer.Application")  '调用IE对象打开网站,以便得到元素
IE.Visible = False                                      'False为浏览器窗口不可见,True为可见

会打开你的360浏览器可能是你的360浏览器是默认浏览器,但IE.Visible = False语句不能让它不可见的原因(只能让IE对象打开的浏览器窗口不可见)

在我的电脑上运行是不可见的。可能你的电脑存在设置上的问题,所以可见360浏览器打开了页面。

WebBrowser1和InternetExplorer.Application获取元素的方法差不多。

我的结论:
想要VB6或者使用VBScript的方法继续遍历下去,很难。

[此贴子已经被作者于2021-2-4 09:05编辑过]

#12
benbbs2021-02-04 13:10
回复 11楼 yuma
好吧,老大都搞不定的,小白也不想弄了。看来是个很深的坑。
#13
风吹过b2021-02-04 20:07
试了一下,得出结论,需要分析JS。

下面是抓包的结果。从返回的结果来看,是使用的动态加载,
发包:
GET /f_ht/ajcx/wj.aspx?cz=dq&mlbh=2333186&wjpx=1&_dlmc=venman&_dlmm= HTTP/1.1
Host: cg.
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
DNT: 1
Referer: http://cg.
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN
Cookie: __yjs_duid=1_aab36b2d9f0068fa1125f4b6743e8bb01612437676878; UM_distinctid=1776cc66618b25-02fb60d4ed3376-71273e10-1aeaa0-1776cc666192a1; CNZZDATA1256793290=1321558718-1612434728-%7C1612434728

收包:
HTTP/1.1 209
Date: Thu, 04 Feb 2021 11:58:57 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
X-AspNet-Version: 4.0.30319
X-Powered-By:
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
YJS-ID: 9c6d280f5ecd30dc-125
Server: yunjiasu

353
_mlxx.scdz = 'http://ys-O.';_mlxx.gx(2333186, '01100');var x = _mlxx.find(2333186);x.scpz = '';x.xzzt = true;_kj.jzxzlx = 0;_kj.cjzscxx('');x.ckzt = true;[
]<li id="W_19315177" class="xwj"  data-ck="3"><img class="bjtb" src="http://zy. /><a href="http://ys-K.  title="...... 1...26... 18:26" target="_blank">A2.txt</a><i>4Byte</i><b></b><span></span><a class="yyck" href="javascript:;">......</a></li><li id="W_19315176" class="xwj"  data-ck="3"><img class="bjtb" src="http://zy. /><a href="http://ys-K.  title="...... 1...26... 18:26" target="_blank">A1.txt</a><i>4Byte</i><b></b><span></span><a class="yyck" href="javascript:;">......</a></li>
#14
benbbs2021-02-04 20:37
回复 13楼 风吹过b
又引来一位大神!果然是越来越高深了,我就以为简单的获取网页源码就能得到链接,搞了几遍都不知道什么回事。现在又来什么发包,收包,是要搞出新高度么
#15
benbbs2021-02-05 23:49
坐等大神用VB实现:后台获取文件夹及各个文件夹下面的资源链接。
#16
风吹过b2021-02-07 09:28
最近一段时间都没忙着。

我理解的思想如下:
1、进入网页调试状态,找到点击文件夹后调用的JS函数,分析该JS函数的算法,然后自己使用VB写出算法来。
2、程序里,先打开网页,取得 COOKIE,然后再取得的文件夹有关数据,然后有二种方案
   可以使用WINSOCK,模拟 HTTP 的请求,发出所要求的状态包。然后接收返回的数据包。
   也可以使用 WinHttp 模拟读取文件夹。
这二种方案请求数据的方案,第二种可能更简单一点,但不知道还不能达到所需的目的。
现在关键是分析JS里的算法。能分析出JS算法,这个事就完成了60%。

#17
风吹过b2021-02-07 09:54
点击目录应该是执行这句吧,
        this.oml.on("click", ".ml", function () { _ml.dj($(this).parent()); });


从抓包结果看,请示的链接是:
http://cg.

那可能的函数是:
http://zy.

var _wj = {
    gxcl: function () {
        if (_mlxx.dqpd()) _wj.dq();
    },
    dq: function (rbh) {
        if (!rbh) rbh = _ml.dqxz;
        if (rbh <= 0) return;
        var f = _ml.fx(rbh);
        _mlxx.find(rbh).gxpd = false;
        var jlzml = _ml.dqzml;
        f.wjq_().html("<li class='lxts'><span class='s3'>正在读取数据...</span></li>");
        _AJ("wj.aspx?cz=dq&mlbh=" + rbh + "&wjpx=" + $(_ml.find(rbh)).attr("data-px"), function (r) {
            var xx = _mlxx.find(rbh);
            xx.dqsj = new Date().getTime();
            xx.gxpd = false;
            xx.isdq = true;
            var s1 = "<li class='lxts'><span class='s1'></span>";
            s1 += "<a style='color:#999966;' href='javascript:'>【刷新】</a>";
            s1 += "</li>";

            r = vre(r, "&amp;", "&");    //兼容处理
            f.wjq_().html(r + s1);
            _zml.ztjc(jlzml);
            _ml.gxtj(f);
            _ml.cdqxz(rbh);
            //_zdy.gx(rbh);
            _gxxl.gx();
            _ev.cf("_ml.dq", rbh);
            _ym.dw(_ml.find(rbh));
        }, function (r) {
            alert(r);
            _ml.cdqxz(-1);
        });

    },

我对JS一知半解,给绕晕了。
#18
benbbs2021-02-08 19:57
继续水这个帖子,直到有高手解决了问题
1