VB.NET - 登录使用隐藏表单键的网站

问题描述

我正在开发一个控制台应用程序,该应用程序需要登录网站才能下载文本文件 - 登录过程给我带来了一些麻烦。 登录表单有 2 个文本字段(用户名和密码),还有一个用于表单键的隐藏输入字段。我不是有经验的 Web 开发人员,但我假设 PHP 脚本会生成此密钥并将其存储在我的会话中。如果这个key没有正确提交,浏览器只会重新打开登录页面。 查看网站源代码时可以看到此键,但不知道如何以编程方式获取此值。

到目前为止,我正在执行以下操作:

Dim cookies As New CookieCollection
Dim cookieRequest As HttpWebRequest = WebRequest.Create("https://www.website.com/customer/account/login/")
cookieRequest.CookieContainer = New CookieContainer()
cookieRequest.CookieContainer.Add(cookies)
Dim cookieResponse As HttpWebResponse = cookieRequest.GetResponse
cookies = cookieResponse.Cookies

稍后在我的代码中,我使用获得的 cookie 创建一个 CookieAwareWebClient 对象,然后该对象将通过 POST 请求将必要的数据发送到网站以登录并下载我想要的文件

Dim cookieJar As New CookieContainer
cookieJar.Add(cookies)
Dim client As New CookieAwareWebClient(cookieJar)
Dim reqparm As New Specialized.NameValueCollection
reqparm.Add("username","<my_username>")
reqparm.Add("passwd","<my_password>")
reqparm.Add("form_key","??????")
Dim responsebytes = client.UploadValues("https://www.website.com/customer/account/loginPost/","POST",reqparm)
Dim responsebody = (New Text.UTF8Encoding).GetString(responsebytes)   
' validate login if it works...
Dim strDL As String = client.DownloadString("https://www.website.com/downloadFile.PHP")

所以基本上我的问题是:在我用我的网络客户端发布数据之前是否可以获取 form_key 值,或者这是专门为防止有人像那样访问网站而设计的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)