如何用C#程序自动登陆网页(无验证码)

如何用C#程序自动登陆网页(无验证码),第1张

"这是一个VBS登陆163邮箱的脚升森氏春顷本。你参考一下。"

On Error Resume Next

Set fso=CreateObject("Scripting.FileSystemObject")

Set fr=fso.OpenTextFile("163.txt")

Do Until fr.AtEndOfStream

Login fr.ReadLine

Loop

fr.Close

Set fr=Nothing

Set fso=Nothing

Function Login(text)

Set Wshell=WScript.CreateObject("WScript.Shell")

AppName="163邮箱"

Set ie=WScript.CreateObject("吵散InternetExplorer.Application")

ie.visible=True

text=Trim(text)

ID=Left(text,InStr(text,"@")-1)

PW=Right(text,len(text)-instrrev(text,"-"))

For i=1 To 1 Step 1

ie.navigate "http://mail.163.com"

Do

Wscript.Sleep 200

Loop Until ie.ReadyState=4

ie.Document.login163.username.value="用户名"

ie.Document.login163.password.value="密码"

WShell.SendKeys "~" ' 回车

WShell.SendKeys "~" ' 回车

Wscript.Sleep 500 ' 根据自己的网速确定等待时间

Wshell.SendKeys "^W" ' 关闭IE窗口

Next

Set ie=Nothing

Set Wshell=Nothing

End Function

我不得不使用好几个系统 都是B/S结构的 每次登录都需要输入用户名和密码 觉得非常麻烦 考虑到其他同事也会有这样的需求 不妨就写个自动登录的程序吧 之前 也考虑过使用单点登录 几经尝试之后还是放弃了

我习惯使用Java 本能地开始寻找Java的解决方法 在Google中输入 Java自动登录 Java网页模拟登录 Java Post 登录 结果倒是不少 内容也差不多 我尝试很多次终究也没有达到我预期的目标 后来 我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行 但这些代码确实管用

我们先分析一下代码

<%@ pageimport= java util * %>

<%@ pageimport= java io * %>

<%@ pageimport= * %>

String surl =

URL url = newURL(surl)

URLConnection conn= url openConnection()

conn setDoOutput(true)

OutputStreamWriterout=new OutputStreamWriter(conn getOutputStream())

String str = username=yourname&password=

out write(str)

out flush()

out close()

到这里 如果在C/S结构中 且参数正确 程序能够成功登录到这个oa系统 要看到结果 你可以通过下面的代码将系统服务器返回的结果System out println()出来

String sling =

String scontent =

BufferedReader in = new BufferedReader(newInputStreamReader(conn getInputStream() UTF ))

while ((sling = in readLine())!= null)

scontent += in + \r\n

System out println(scontent)

在C/S结构下 可以到得到控制台输出了返回值 从返回内容里可以看出程序已经成功登录 但要是把这个网址浏览器打开 还是得重新登录 问题没有得到根本解决 如果只是恶意注册 到这里应该就达到目的了

看样子C/S结构下不容易实现网页程序自动登录 除非你在C/S程序中内嵌一个浏览器 直接在这个浏览器中自动访问系统 应该没有别的核册液方法 主要问题在于我们改物没有办法共享Session

为了便于共享Session 我们只能在浏览器中实现网页自动登录 通过上面的代码在jsp页面中测试 达不到预期目标

网页自动登录 就是希望程序自动填充用户名和密码 然后以Post方式提交给登录页面的Form所指向的action页面或方法 我将系统的登录页面的源代码保存成一个网页 然后在username和password文本框中设置默认值 然后通过这网页登录系统 测试后 发现可行 接下来 你可能已经想到了解决方法

我们可以通过url openConnection()建立连接 将返回的scontent打印出来 然后接着打印以下代码

out println( <scripttype=\ text/javascript\ >姿谈\r\n )

out println( document getElementsByName(\ username\ )[ ] value=yourname\r\n )

out println( document getElementsByName(\ password\ )[ ] value= \r\n )

out println( document forms[ ] submit() \r\n )

out println( </script>\r\n )

原理很简单 通过login jsp将登录页面的全部源代码写在当前页面 然后使用javascript脚本将用户名和密码的值填充上 最后提交表单 这样中 终于实现了自动登录的目标 现在我通过一个特殊的网址 例如?url=fc cd bbc e f affd de e d c b f ff ec f ff d c ef c b ac 就可以自动访问这个oa了

lishixinzhi/Article/program/Java/hx/201311/26922

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

/*随机码产生函数*/锋袭尘

void RandomCode (char Rcode[])

{

int i

srand ((unsigned int)time(NULL))

for (i = 0i <3++i)

Rcode[i] = rand()%10 + '0'

Rcode[i] = '\0'

}

/*登陆函数,判断信息是否匹配,若匹配返回1,否则返回0*/

int LandedApp (char *password[], char Rcode[])

{

char name[10] = {0}

char pword[10] = {0}

char rcode[4] = {0}

printf ("用户名 : ")

gets (name)

printf ("密码 : ")

gets (pword)

printf ("随机码 : ")

gets (rcode)

if (strcmp (name, password[0]) != 0 || strcmp (pword, password[1]) != 0 || strcmp (rcode, Rcode) != 0)

return 0

else

return 1

}

int main ()

{

char * password[2] = {"admin", "admin123"}//禅弯用户名和银禅密码

char rc[4] = {0} //随机码

int count = 3 //可输入次数

puts ("请输入用户名,密码和随机码:")

while (count)

{

RandomCode (rc)

printf ("随机码 : %s\n", rc)

if (LandedApp(password, rc) != 0)

break

--count

if (count != 0)

puts ("错误的用户名或密码或随机码,请重新输入: ")

}

if (count != 0)

puts ("\n成功登陆!")

else

puts ("\n登录失败 !")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12317835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存