通过用户ID(如UID)登录并访问需要登录的网页
这是最常见的理解,很多网站(如微博、B站、知乎等)的个人信息页面需要登录后才能访问,其URL中通常包含用户的唯一标识符,即UID。https://weibo.com/u/1234567890。

(图片来源网络,侵删)
这里的“通过UID访问”指的是:
- 第一步:登录,你需要先向网站的登录接口发送你的用户名和密码,获取到登录凭证(通常是Cookie)。
- 第二步:携带凭证访问,在访问包含UID的URL时,必须带上第一步获取到的登录凭证,服务器才会承认你的身份,允许你查看该页面。
下面,我们以一个模拟的登录流程为例,讲解如何实现。
核心思路
- 分析登录接口:使用浏览器开发者工具(F12)的“网络”面板,手动登录一次网站,找到处理登录请求的API接口地址、请求方法(通常是POST)、需要提交的参数(用户名、密码等)以及服务器返回的响应(特别是包含登录凭证的Cookie)。
- 编写易代码模拟登录:
- 使用
.支持库中的超级列表框或自定义数据类型来存储请求头、请求参数等。 - 使用
网页访问_取网页源码()或网页访问_取数据()等命令,向登录接口发送POST请求。 - 从服务器返回的响应头或响应数据中,提取出关键的登录凭证(如
Set-Cookie中的值)。
- 使用
- 编写易代码访问目标页面:
- 创建一个新的请求,目标URL是包含UID的页面地址。
- 在请求头中加入上一步获取到的登录凭证(通常是
Cookie字段)。 - 发送请求,获取目标页面的HTML源码。
代码示例
假设我们要登录一个虚构的网站,其登录接口是 https://example.com/api/login,需要POST username 和 password 参数,登录成功后,服务器会返回一个 sessionid,我们需要用它来访问 https://example.com/user/12345 这个页面。
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 loginHeaders, 文本型, , "0"
.局部变量 loginParams, 文本型, , "0"
.局部变量 responseHeaders, 文本型, , "0"
.局部变量 responseBody, 文本型, , "0"
.局部变量 sessionId, 文本型, , "0"
.局部变量 targetUrl, 文本型, , "0"
.局部变量 targetHeaders, 文本型, , "0"
.局部变量 targetSource, 文本型, , "0"
' --- 第一步:模拟登录 ---
' 1.1. 设置登录请求头
loginHeaders = "Content-Type: application/x-www-form-urlencoded" + #换行符
' 1.2. 设置登录请求参数 (替换成你的真实账号密码)
loginParams = "username=你的用户名&password=你的密码"
' 1.3. 发送登录请求
' 注意:这里的 .取网页源码() 返回的是服务器响应体
' .取数据() 可以同时获取响应头和响应体,更灵活
.如果真 (网页访问_取数据 (“https://example.com/api/login”, loginParams, loginHeaders, , , responseHeaders, responseBody))
' 1.4. 从响应头中提取登录凭证 (这里是 sessionid)
' 响应头格式可能是: "Set-Cookie: sessionid=abc123; Path=/"
sessionId = 取文本_中间 (responseHeaders, "sessionid=", ";")
.如果真 (sessionId ≠ "")
信息框 (“登录成功,获取到 SessionID: ” + sessionId, 0, , )
' --- 第二步:携带凭证访问UID页面 ---
' 2.1. 设置目标URL (这里用 123 作为示例UID)
targetUrl = "https://example.com/user/123"
' 2.2. 设置访问目标页面所需的请求头,并加入登录凭证
targetHeaders = "Cookie: sessionid=" + sessionId + #换行符
' 2.3. 发送请求获取目标页面源码
.如果真 (网页访问_取网页源码 (targetUrl, , targetHeaders, , , targetSource))
' 2.4. 显示或处理获取到的源码
' 通常源码很长,这里只显示前200个字符作为示例
编辑框_目标页面源码.内容 = 取文本左边 (targetSource, 200)
信息框 (“成功访问UID页面!源码已载入编辑框。”, 0, , )
.否则
信息框 (“访问UID页面失败,错误: ” + 到文本 (网页访问_取最后错误代码 ()), 0, , )
.如果结束
.否则
信息框 (“登录失败,未能获取到 SessionID。”, 0, , )
.如果结束
.否则
信息框 (“登录请求失败,错误: ” + 到文本 (网页访问_取最后错误代码 ()), 0, , )
.如果结束
.子程序
代码解释:

(图片来源网络,侵删)
loginHeaders和loginParams:构造了登录时需要发送的数据。Content-Type告诉服务器我们发送的是表单数据。网页访问_取数据():这是一个非常强大的命令,它可以同时获取响应头(responseHeaders)和响应体(responseBody),我们用它来登录。取文本_中间():从返回的响应头字符串中,巧妙地提取出sessionid的值。targetHeaders:这是关键!我们在新的请求头中加入了Cookie字段,其值就是刚刚登录获取到的sessionId,这告诉服务器:“我已经登录过了,这是我的身份证明”。网页访问_取网页源码():使用构造好的请求头去访问目标UID页面,成功后就能获取到该页面的HTML源码。
直接通过UID构造URL并访问(无需登录或公开页面)
有些网站的用户主页、帖子等是公开的,不需要登录就能访问,它们的URL本身就是由UID构成的,https://tieba.baidu.com/p/123456789(这里的帖子ID就是一种UID)。
这种情况非常简单,直接构造URL然后用 网页访问_取网页源码() 访问即可。
核心思路
- 确定URL格式:了解网站中通过UID访问页面的URL规则。
https://example.com/profile?uid=123。 - 拼接URL:在易语言中,使用
到文本()函数将UID数值转换为字符串,然后与固定的URL部分拼接起来。 - 直接访问:调用
网页访问_取网页源码()访问拼接好的完整URL。
代码示例
假设我们要访问一个公开的用户资料页,URL格式为 https://api.example.com/public/profile?uid=用户ID。
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 baseUrl, 文本型
.局部变量 uid, 整数型
.局部变量 fullUrl, 文本型
.局部变量 pageSource, 文本型
' 1. 设置基础URL
baseUrl = "https://api.example.com/public/profile?uid="
' 2. 获取或定义UID (这里用 98765 作为示例)
uid = 98765
' 3. 拼接完整的URL
fullUrl = baseUrl + 到文本 (uid)
' 4. 直接访问该URL并获取源码
.如果真 (网页访问_取网页源码 (fullUrl, , , , , pageSource))
' 5. 处理获取到的源码
编辑框_目标页面源码.内容 = pageSource
信息框 (“成功通过UID访问公开页面!源码已载入编辑框。”, 0, , )
.否则
信息框 (“访问失败,错误: ” + 到文本 (网页访问_取最后错误代码 ()), 0, , )
.如果结束
.子程序
代码解释:

(图片来源网络,侵删)
- 这个例子非常直观,核心就是字符串的拼接。
baseUrl + 到文本(uid)将基础URL和UID数字连接成一个完整的、可访问的网址。- 由于是公开页面,不需要任何登录凭证,所以直接调用
网页访问_取网页源码()即可。
总结与重要提示
| 特性 | 场景一 (需登录) | 场景二 (公开页面) |
|---|---|---|
| 核心步骤 | 模拟登录获取凭证 携带凭证访问目标URL |
拼接包含UID的URL 直接访问该URL |
| 关键技术 | 分析登录接口、处理POST请求、提取和管理Cookie | 字符串拼接、构造GET请求 |
| 易语言命令 | 网页访问_取数据(), 取文本_中间() |
网页访问_取网页源码(), 到文本() |
| 适用场景 | 访问个人主页、发帖、评论等需要身份验证的操作 | 访问公开的用户资料、帖子、文章等 |
给易语言开发者的建议:
- 善用浏览器开发者工具:这是进行网页抓取和模拟登录的必备工具,它能让你清晰地看到网络请求的每一个细节,是成功的关键。
- 处理验证码:现在很多网站有登录验证码,易语言原生处理图形验证码比较困难,可以考虑使用打码平台接口,或者通过
selenium等自动化工具驱动真实浏览器来解决。 - 尊重网站规则:在编写爬虫或自动化脚本时,请务必遵守目标网站的
robots.txt协议,不要过于频繁地请求,以免对服务器造成过大压力,导致你的IP被屏蔽。 - 错误处理:网络请求有很多不确定性(如超时、服务器错误、网络断开等),代码中一定要加入完善的错误判断,使用
如果真和否则来处理各种异常情况。
