C# 使用webBrowser控件获取网页中的账号密码登录网页元素并自动填写模拟自动登录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 使用webBrowser控件获取网页中的账号密码登录网页元素并自动填写模拟自动登录?相关的知识,希望对你有一定的参考价值。

想实现qq音乐网页版自动登录功能,但是不知道怎么用webBrowser控件获取对应的网页元素。之前别的网页可以用下面的方式获取成功,但是这个qq音乐网页不行了,请大神指教!
以前是这样做的,如图1:
htmlElement user = webBrowser1.Document.All["username"];//获取账号文本框,ID=username
HtmlElement password = webBrowser1.Document.All["password"];//获取密码文本框,ID=password
HtmlElement LoginButton = webBrowser1.Document.All["sso_login"];//获取登录按钮,ID=sso_login
user.SetAttribute("value","abc");//给账号文本框内容设置为“abc”password.SetAttribute("value",“*123” );//给密码文本框内容设置为“*123”
LoginButton.InvokeMember("click");//调用按钮的点击事件

现在qq音乐网页同样方法不行了,如图2

QQ音乐登录的方式好像是API的方式,给你两个方案

1、API方式:然后输入对应的参数,你就可以登录成功,这时你就可以做自己的想做的事了

2、模拟点击(selenium)方式:即使利用seleium模拟鼠标点击网页,实现登录,这个方式属于笨拙的方式

注意:有时候可能出现需要输入验证码,这时你就需要识别验证码,给你推荐 tesseract-ocr 这个插件,源码地址tesseract-orc  不明白的留言吧

追问

1、API方式指的是啥呀?可以具体点不?
2、selenium方式,是不是运行软件的时候,自己的鼠标就不能乱动了?
3、验证码还没进行到这一步,只求先解决能输入帐号密码的功能就行

参考技术A 我没用过你这种方法,我们一般用cookie并进行加密处理,登录时添加验证若存在的取出添加到标签上 参考技术B 这个应该是受JS div 标签影响 ,就好比 有时候我们去一个母界面去取 子界面一样应该是取不到追问

那有什么其他方法吗?还请指教了!

追答

指教谈不上。尝试一下获得class属性值的看看有没有什么收获

追问

之前也用过遍历className=inputstyle来找,但是也不行,结果值没有等于这项的

追答

不好意思 刚刚看见 如果实在不能 控制 能不能尝试脚本控制

参考技术C 我觉得是因为qq的是个弹框,你代码执行的时候,弹框还没出现,所以要循环等待?追问

你好,我是把弹框点开后,所有界面出现了,我再去用代码找那些元素的,但是不行。这种弹窗是有什么别的特殊方法吗?求指教!

追答

你把现有代码发来看看(最好是放github)

追问

我就是在winform窗体中,用webBrowser控件打开y.qq.com,然后把登录界面手动点开,再在一个按钮里面加下面代码。只不过支行完,都是没有值,元素都是Null
HtmlElement user = webBrowser1.Document.All["u"];
HtmlElement password = webBrowser1.Document.All["p"];
HtmlElement LoginButton = webBrowser1.Document.All["login_button"];
LoginButton.InvokeMember("click");

追答

共享代码调试

c#添加webBrowser控件,如何实现自动填写打开的网页中的登录帐号,密码,并且自动登陆?

比如该网页用户名ID:use,密码:pass,登陆按钮用的是alink=asb()的

cookie
打开网页时进行cookie认证(可考虑对cookie与IP的认证)
在Page_load里面进行cookie认证,认证通过直接跳转到登录后页面(为啥自动登录还要填登录账号和密码呢...)
参考技术A cookie认证,Page_load中赋值,再出发登录事件即可

以上是关于C# 使用webBrowser控件获取网页中的账号密码登录网页元素并自动填写模拟自动登录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# WebBrowser 控件中获取重定向的 url

C# WebBrowser控件使用整理

C#在控件webBrowser中操作页面,如何取到网页登录时的用户名密码

如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?

C# webbrowser怎么判断登录是不是成功?

如何使用webbrowser控件获取网页源代码