这是一个场景,我正试图为我的家人实现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
当用户连接时,他会获得一些积分(不要问我是如何获得的,我不知道),问题是当会话结束时(我的意思是,当我从网站注销以重新登录到网站时),所有的积分都会丢失,但当用户直接从导航器登录时不会发生这种情况,只有当用户从我的应用程序登录时才会发生这种情况。
这是我注销的方式:
Private Sub log_out()
' Simple as this, just I acces to the logout frame
WebBrowser1.Navigate(url & "/00000000000000000000000000000000/main/logout/")
End Sub
然后我需要一个解决方案来在注销后保持这些用户会话点的活力,我不知道问题是我需要管理cookie还是我需要做什么,因为正如我所说,我对网络了解不多。
附言:如果我需要提供网址,告诉我,我不知道提供色情网址是否违反了SO规则。
虽然URL会有所帮助,但我有一些想法/假设可能有助于回答您的问题。
假设你获得的积分不是徽章,而是更有形的东西(例如现金),那么通过cookie设置积分是不可能的。这很容易调整cookie,并使用它来操纵/欺骗积分系统。如果这个假设是错误的,你可以使用Firebug/firecookie或Chromes webdev工具(在资源中,它说是cookie)来检查cookie。
然而,你确定你正在获得积分吗?这可能是因为你的winforms程序没有做获得这些积分所需的事情,因此当你注销登录时,没有积分,因为你从未获得过积分。
由于在注销时将点存储到服务器或将这些点完全存储在用户端是不常见的,我认为我们可以排除任何登录/注销和用户端问题。
可能发生的情况是,你通过在网站上进行活动来获得积分,该网站由"积分系统"加载到一个框架中在这种情况下,使用WebBrowser1.Navigate(url)
访问网站可能是不够的,因为它既没有加载"积分系统"的框架,也没有加载框架内的正确网站。
不管怎样,这里有很多开放的地方。积分系统/网站上的更多信息(因此URL会派上用场)可以让我们解决您的问题。
===快速编辑===
该网站使用PHP会话。会话ID存储在cookie中。如果你抓住并保留那块饼干呢?这会影响什么吗?
您可以通过以下步骤排除cookie:
1) 通过浏览器手动登录网站
2) 累积一些点
3) 注销
4) 重新登录以确认上一次会话中的点数仍然存在
5) 再次注销,这一次清除所有浏览器历史记录/cookie/临时文件
6) 最终在中重新登录
如果积分没有了,那就是基于cookie的。如果积分仍然存在,它们很可能会跟踪服务器端,这表明除了简单登录(即在整个网站中导航)之外,还有另一个累积积分的触发因素。