找回密码
 加入
搜索
查看: 5892|回复: 14

[系统综合] [已解决]求天涯论坛验证码真实地址

  [复制链接]
发表于 2013-10-31 02:40:41 | 显示全部楼层 |阅读模式
本帖最后由 kxing 于 2013-10-31 18:20 编辑

想要做个自动发帖软件,遇到验证码就获取下来显示在GUI上以供输入。
关键是找到验证码的图片点右键属性,那个图片地址访问就报错。
这个是验证码的地址:http://imgcode.tianya.cn/service ... ce?_r=1383157622897
后面的应该是毫秒的时间戳,au3似乎没有转换毫秒的。。
恳请高人指点,谢谢!
发表于 2013-10-31 08:33:44 | 显示全部楼层
这个跟时间戳没关系,这个验证码是防刷新防外链的,可能他保存COOKIES了,只有发送COOKIES才能正常显示验证码, 或者他截取了来路了。 你要把来路也发送过去才会显示。比如你先访问
http://passport.tianya.cn/regist ... Ffocus.tianya.cn%2F
这个网站,然后在验证码那边打开就可以了。
要发送COOKIES和 Referer 保证能获取到验证码。
Referer:http://passport.tianya.cn/regist ... Ffocus.tianya.cn%2F

Set-Cookie:vk=a9ddfed76e5f8d36; domain=tianya.cn; path=/

评分

参与人数 1金钱 +30 收起 理由
zldfsz + 30

查看全部评分

 楼主| 发表于 2013-10-31 11:48:46 | 显示全部楼层
感谢楼上的回答。
请问下我是在回复的时候要验证码,Referer也要用这个网址吗?
另外cookies是你提供的字符串固定不变的吗,没弄过cookies,别笑话。。。
多谢!!
 楼主| 发表于 2013-10-31 14:08:26 | 显示全部楼层
恳请楼上能否给个完整的例子呢,能够显示验证码出来。
万分感激》。。。
 楼主| 发表于 2013-10-31 15:26:56 | 显示全部楼层
用这种方式返回的也是错误页面:
$a=_winhttp_getrespond(-1,"http://imgcode.tianya.cn/services/ImageCodeService?_r=1383157622897",2,-1,"Referer: http://passport.tianya.cn/","Set-Cookie:vk=a9ddfed76e5f8d36; domain=tianya.cn; path=/")
msgbox(0,'',$a[0])
求帮助,谢谢!!!
发表于 2013-10-31 15:50:04 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$file = @ScriptDir & "\00000.gif"
FileDelete($file)

$Form1 = GUICreate("Form1", 300, 200, -1, -1)
$Pic1 = GUICtrlCreatePic("", 80, 30, 140, 50, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$LabelCheck = GUICtrlCreateLabel("看不清图片点击图片更换", 80, 85, 136, 17)
GUISetState(@SW_SHOW)

nRePic()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Pic1
                        nRePic()
        EndSwitch
WEnd

Func nRePic()
        FileDelete($file)
        $httpObj = ObjCreate("winhttp.winhttprequest.5.1")
        $httpObj.open("GET", 'http://imgcode.tianya.cn/services/ImageCodeService',False)
        $httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
        $httpObj.setRequestHeader("Referer", "http://passport.tianya.cn/register/default.jsp?sourceURL=http%3A%2F%2Ffocus.tianya.cn%2F")
        $httpObj.Send()
        $HTMLSource = $httpObj.ResponseBody
        $oH = ObjCreate("Adodb.Stream")
        $oH.Type = 1
        $oH.Mode = 3
        $oH.Open
        $oH.write($HTMLSource)
        $oH.SaveToFile($file)
        $oH.Close()
        GUICtrlSetImage($Pic1, $file)
         FileDelete($file)
EndFunc   ;==>nRePic
试试这样

评分

参与人数 1金钱 +30 收起 理由
kxing + 30 谢谢谢谢!!!

查看全部评分

发表于 2013-10-31 15:50:24 | 显示全部楼层
网络问题发重复了,编辑掉。。。。
 楼主| 发表于 2013-10-31 18:19:23 | 显示全部楼层
非常成功,又学到知识了。。。。
谢谢谢谢!!!
 楼主| 发表于 2013-10-31 19:22:17 | 显示全部楼层
本帖最后由 kxing 于 2013-10-31 19:25 编辑

再请问下,为何我获取到的验证码用来回帖总提示验证码错误呢?
是否还要传入其他什么和验证码对应的参数呢?
这是我抓包的post数据:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$file = @ScriptDir & "\00000.gif"
FileDelete($file)

$Form1 = GUICreate("Form1", 300, 200, -1, -1)
guisetbkcolor(0x000000)
$Pic1 = GUICtrlCreatePic("", 80, 30, 140, 50, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$LabelCheck = GUICtrlCreateLabel("看不清图片点击图片更换", 80, 85, 136, 17)
$hCheckcode=guictrlcreateinput("",10,170,60,20)
$hOK=guictrlcreatebutton("submit",70,170,60,20)
GUISetState(@SW_SHOW)

nRePic()

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Pic1
nRePic()

case $hOK
$url="http://bbs.tianya.cn/api?method=bbs.ice.reply"
$data="params.artId=972¶ms.item=50043¶ms.appId=bbs¶ms.appBlock=50043¶ms.postId=972¶ms.preUrl=http%3A%2F%2Fbbs.tianya.cn%2Fpost-50043-972-1.shtml¶ms.preTitle=111111%E3%80%90%E9%A2%A0%E8%A6%86%E6%80%A7%E6%8E%A8%E7%90%86%E3%80%91%E9%87%91%E6%98%93%E6%81%92%E8%A7%A3%E8%AF%BB%E4%B8%80%E5%AE%A1%E5%88%A4%E5%86%B3%E4%B9%A6%EF%BC%88%E5%9B%9B%EF%BC%89%EF%BC%9A%E9%81%97%E6%BC%8F%E7%9A%84%E7%96%91%E7%82%B9%EF%BC%881%EF%BC%89¶ms.preUserId=55122586¶ms.preUserName=%E9%87%91%E6%98%93%E6%81%92¶ms.prePostTime=1383200312000¶ms.sourceName=%E5%A4%A9%E6%B6%AF%E8%AE%BA%E5%9D%9B¶ms.type=3¶ms.bScore=true¶ms.content=11111%E4%B8%8D%E7%9F%A5%E9%81%93%E8%BF%99%E7%B1%BB%E5%B0%8F%E8%AF%B4%E9%82%A3%E9%87%8C%E6%9C%89%E6%9B%B4%E5%A4%9A%E6%9B%B4%E5%85%A8%E9%9D%A2%E7%9A%84%E3%80%82%E3%80%82%E3%80%82¶ms.title=111111%E4%B8%8D%E7%9F%A5%E9%81%93%E8%BF%99%E7%B1%BB%E5%B0%8F%E8%AF%B4%E9%82%A3%E9%87%8C%E6%9C%89%E6%9B%B4%E5%A4%9A%E6%9B%B4%E5%85%A8%E9%9D%A2%E7%9A%84%E3%80%82%E3%80%82%E3%80%82¶ms.bWeiBo=false¶ms.vCode="&guictrlread($hCheckcode)

$oIE=ObjCreate("microsoft.xmlhttp")
$oIE.Open("POST",$url,false)
$oIE.setRequestHeader("Cache-Control", "no-cache")
$oIE.setRequestHeader("Accept-Language", "zh-cn")
$oIE.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
$oIE.setRequestHeader("Referer",$url)
$oIE.Send($data)
$htm=$oIE.responseText

msgbox(0,'',$htm)

EndSwitch
WEnd

Func nRePic()
FileDelete($file)
$oIE= ObjCreate("winhttp.winhttprequest.5.1")
$oIE.open("GET", 'http://imgcode.tianya.cn/services/ImageCodeService',False)
;$oIE.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oIE.setRequestHeader("Referer", "http://passport.tianya.cn/register/default.jsp?sourceURL=http%3A%2F%2Ffocus.tianya.cn%2F")
$oIE.Send()
$HTMLSource=$oIE.ResponseBody
$oH=ObjCreate("Adodb.Stream")
$oH.Type = 1
$oH.Mode = 3
$oH.Open
$oH.write($HTMLSource)
$oH.SaveToFile($file)
$oH.Close()
GUICtrlSetImage($Pic1, $file)
FileDelete($file)
EndFunc   ;==>nRePic
 楼主| 发表于 2013-10-31 19:22:50 | 显示全部楼层
 楼主| 发表于 2013-11-1 09:23:34 | 显示全部楼层
回复 7# xzxnovice

老兄,能否再麻烦指点一二,先谢过了。。。
发表于 2013-11-1 10:09:59 | 显示全部楼层
本帖最后由 xzxnovice 于 2013-11-1 10:15 编辑

回复 11# kxing


1.    ObjCreate("microsoft.xmlhttp")  对像程序开始时创建一次就可以了,以后就用这个,不用重新创建,这样会保留登陆后的cookie.

2.    我见你还没登陆怎样回贴?
 楼主| 发表于 2013-11-1 12:04:24 | 显示全部楼层
回复 12# xzxnovice

我这边在网页上是保存了登录状态的,在另一台win7系统下就能正常发帖。
xp系统下就总提示验证码错误,无奈啊。。。。
发表于 2013-11-1 12:18:45 | 显示全部楼层
回复 13# kxing


  我还没试过ie网页跟au3共享cookie成功!!
 楼主| 发表于 2013-11-1 13:02:08 | 显示全部楼层
似的,用objcreate("microsoft.xmlhttp")就能共享cookies。
但是用ObjCreate("winhttp.winhttprequest.5.1") 却不行,总提示没登陆。。。
有办法实现和ie那样,保存登录状态吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 19:17 , Processed in 0.088067 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表