.net - 在网站中注销用户后,他丢失了上一个 session 的用户保存数据

标签 .net vb.net authentication browser webbrowser-control

是这样的场景,我正在尝试为我的家人实现一个 winforms 应用程序。

他需要访问一个(色情)网站来发布某种宣传并在保持联系的同时获得某种积分,他说这种网站最适合做这件事,好吧,我没有人质疑,我只是做他需要的。

好吧,我不太了解网络,但该网站是基于框架的,这是我登录的方式:

private sub log_in()

    ' Firstly, navigate to the main page. (Ex: www.website.com)
    WebBrowser1.Navigate(url)

    ' Secondly, navigate to the login page .
    ' (seems that If I directly navigate to this page I can't log in, 
    ' so first of all I need to navigate to the main page)
    WebBrowser1.Navigate(url & "/main/login.php")


    ' Put username/password on the textboxes.
    WebBrowser1.Document.GetElementById("id_username").InnerText = user.ToString()
    WebBrowser1.Document.GetElementById("id_password").InnerText = pass.ToString()

    ' click the button to submit login.
    WebBrowser1.Document.DomDocument.forms(0).submit()

    ' At this point I'm looged in.

End sub

当用户连接时,他获得了一些点数(不要问我怎么做的,我不知道),问题是当 session 结束时(我的意思是,当我从站点注销以重新登录网站),所有的点都丢失了,但是当用户直接从导航器登录时不会发生这种情况,这只会发生在用户从我的应用程序登录时。

这是我注销的方式:

Private Sub log_out()

    ' Simple as this, just I acces to the logout frame
    WebBrowser1.Navigate(url & "/00000000000000000000000000000000/main/logout/")

End Sub

然后我需要一个解决方案来在注销后让那些用户 session 点保持事件状态,我不知道问题是我需要管理 cookie 还是我需要做什么,因为就像我说的那样我不知道对网络了解太多。

PS:如果我需要提供网址,请告诉我,我不知道提供色情网址是否违反了 SO 规则。

最佳答案

虽然 URL 会有所帮助,但我有一些想法/假设可能有助于回答您的问题。

假设您获得的积分不会给您徽章,而是一些更有形的东西(例如现金),不太可能通过 cookie 设置积分。调整 cookie 很容易,并且可以操纵/欺骗积分系统。 如果这个假设是错误的,您可以使用 Firebug/firecookie 或 Chromes webdev 工具(在资源下,它说 cookies)来检查 cookies。

但是,你确定你正在获得积分吗?可能是您的 winforms 程序没有执行获得这些点数所需的操作,因此当您注销-登录时没有点数,因为您从未获得过它们。

由于在注销时将点存储到服务器或将它们完全存储在用户端并不常见,我认为我们可以排除任何登录/注销和用户端问题。

可能发生的情况是,您通过在网站上进行事件来赚取积分,该网站由“积分系统”加载到框架中 在这种情况下,使用 WebBrowser1.Navigate(url) 访问网站可能是不够的,因为它既不加载“积分系统”的框架,也不加载正确的网站在框架内。

无论如何,这里有很多开放的结局。有关积分系统/网站的更多信息(因此 URL 会派上用场)可以帮助我们解决您的问题。

== 快速编辑 ==

该网站使用 PHP session 。 session ID 存储在 cookie 中。 如果你捕获并保留了那 block cookies 怎么办?这有什么影响吗?

关于.net - 在网站中注销用户后,他丢失了上一个 session 的用户保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20225069/

相关文章:

php - 我被要求在没有用户名和密码的情况下执行身份验证,我有什么选择?

java - 需要支持基于网络的身份验证

c# - Double.TryParse 千位分隔符返回意外结果

c# - 在不连接到数据库的情况下创建 DbContext

c# - SMTP 显示成功,但电子邮件从未送达 C#

android - 当用户从外部服务登录时,如何在我的后端服务器上检查用户身份

c# - 列表也返回它不包含的内容

c# - .Net 是否有任何控制台 "graphics"库?

c# - 将 'Handles' 从 VB.NET 迁移到 C#

vb.net - 在另一个类中调用过程