如何下载需要预先登录的网页内容?

pigpag 2003-08-12 10:40:36
就拿CSDN举例子吧,我要下载“我的专家分”这一页,不使用WebBrowser控件(可以使用Inet控件或API)。我如何做到?因为CSDN是需要事先登录的。
还有,比如我要做CSDN自动回复,如何将一定的内容Post出去?

不一定要源码,相关内容的链接也可以。感谢!!
...全文
330 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
pigpag 2003-08-25
  • 打赏
  • 举报
回复
先结贴再说,因为没时间试。
谢谢
pigpag 2003-08-17
  • 打赏
  • 举报
回复
呵呵,我透露:我只要访问CSDN就可以了。
所以意义大大。
pigpag 2003-08-17
  • 打赏
  • 举报
回复
登录好像是成功的。

我在程序里面获得了这样的Cookie:
mid=xxxxxx; domain=www.csdn.net; path=/

我要回传的是什么呢?是不是mid=xxxxxx?

我用Inet.GetHeader("Set-Cookie")获得的。还有,密码错误是没有Cookie返回的。
Garfield 2003-08-17
  • 打赏
  • 举报
回复
此外一个分号隔开的就是一个cookies
还没看懂呀?
Garfield 2003-08-17
  • 打赏
  • 举报
回复
domain和path是cookies的访问限制
其他是csdn设置的.
ticsa 2003-08-17
  • 打赏
  • 举报
回复
用inet登陆很好说
logUrl = "http://www.some.com/in.jsp"
logInf = "url=http://login.some.com/cgi/login&username=" & name & "&password=" & pass
MainForm.Inet1.Protocol = icHTTP '指明控件协议类型
MainForm.Inet1.Execute logUrl, "POST", logInf, "Content-Type: application/x-www-form-urlencoded"
发送信息也用类似的方法就OK
:)
pigpag 2003-08-17
  • 打赏
  • 举报
回复
那么如何解释这个:
room=2; domain=www.csdn.net; path=/

有时是这样的。
真奇怪。我自己先去试试。
Garfield 2003-08-17
  • 打赏
  • 举报
回复
登录错误当然没有cookies...你要把整个"mid=xxxxxx; domain=www.csdn.net; path=/
"传回。
mwjx 2003-08-17
  • 打赏
  • 举报
回复
mark
imur 2003-08-16
  • 打赏
  • 举报
回复
楼主能不能将心得写出来?
谢谢先!
Garfield 2003-08-16
  • 打赏
  • 举报
回复
我就是问你有什么意义啊?
如果asp限制了只读表单内容而不读url变量,这样就没用。
我也是反复登录,不过懒得研究。有什么值得研究?
pigpag 2003-08-16
  • 打赏
  • 举报
回复
没有意义吗?

btw: 我上面写错了。我试的时候的确打:/logon.asp?name=<username>&pass=<password>,页面反复刷新了。
Garfield 2003-08-16
  • 打赏
  • 举报
回复
你研究这个有什么意义?
btw: 应该是 …… /logon.asp?name=<username>&pass=<password>
~
pigpag 2003-08-16
  • 打赏
  • 举报
回复
呵呵,忙死了,还没机会试。

可是我试过http://www.csdn.net/member/logon.asp?name=<用户名>?pass=<密码>,就在浏览器里面,结果反复登录,好像不断地在刷新页面。
pigpag 2003-08-15
  • 打赏
  • 举报
回复
我试试!谢谢。
Garfield 2003-08-14
  • 打赏
  • 举报
回复
晕。。。我还以为你真的知道。。。不是HTTP验证机制
是inet.execute的 InputHdrs参数, 就是 HTTP Header。
cookies是放在http header的!
username/password 是代理服务器验证用的。
Garfield 2003-08-14
  • 打赏
  • 举报
回复
to minghui000(绿豆冰好好味)
API怎样做?洗耳恭听
pandengzhe 2003-08-14
  • 打赏
  • 举报
回复
jsjs,努努力,没甚末解决不了的
Garfield 2003-08-14
  • 打赏
  • 举报
回复
我有现成的小工具,还是帮你一把吧..
看看下面的asp代码

<%
response.cookies("Hello") = "World"
%>

设置一个Cookies, 名字为 "Hello", 值为 "World"
IE请求这个asp页面后,返回的HTTP 头如下

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 14 Aug 2003 12:10:17 GMT
X-Powered-By: ASP.NET
Content-Length: 14
Content-Type: text/html
Set-Cookie: Hello=World; path=/ <--- 你看,这就是你需要的
Set-Cookie: ASPSESSIONIDCCDQSTRQ=MPBJMNLBNMFKPFPOIPNGJIFO; path=/ <--- 这个是ASP自动生成的会话Cookies,Session就是Cookies
Cache-control: private



这样IE就会把上面两个Cookies保存起来.然后当他再次请求 path=/, 也就是 Server root 的资源的时候,他就会重新把Cookies放在请求的HTTP Header上面,如下:

GET /helloworld.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: 192.168.0.2
Connection: Keep-Alive
Cookie: Hello=World; ASPSESSIONIDCCDQSTRQ=LPBJMNLBBBOECGFIIAINGAPF <---- 看,两个Cookies一模一样的发回服务器


现在,你用Inet,获取登陆后的cookies,只需要用 strCookies = GetHeader("Set-Cookie")
跟着保存这些cookies到一个变量,然后下次 Inet.execute Execute url, "GET", data, requestHeaders

不用再具体了吧?呵呵
pigpag 2003-08-14
  • 打赏
  • 举报
回复
嚯嚯。我没指望任何的个人。随便谁回答出来都是我所期望的。
加载更多回复(16)

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧