yzm.frm
上传用户:luoweizhao
上传日期:2022-08-01
资源大小:1290k
文件大小:12k
源码类别:

外挂编程

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
  3. Begin VB.Form yzm 
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "请输入验证码"
  6.    ClientHeight    =   2775
  7.    ClientLeft      =   10275
  8.    ClientTop       =   6975
  9.    ClientWidth     =   3990
  10.    Icon            =   "yzm.frx":0000
  11.    LinkTopic       =   "Form8"
  12.    MaxButton       =   0   'False
  13.    MinButton       =   0   'False
  14.    ScaleHeight     =   2775
  15.    ScaleWidth      =   3990
  16.    Begin VB.CommandButton Command1 
  17.       Caption         =   "确认"
  18.       Default         =   -1  'True
  19.       Height          =   495
  20.       Left            =   1200
  21.       TabIndex        =   5
  22.       Top             =   3600
  23.       Width           =   1215
  24.    End
  25.    Begin VB.Frame Frame1 
  26.       Caption         =   "请输入QQ农场操作验证码"
  27.       Height          =   2535
  28.       Left            =   120
  29.       TabIndex        =   1
  30.       Top             =   120
  31.       Width           =   3735
  32.       Begin VB.Timer Timer3 
  33.          Enabled         =   0   'False
  34.          Interval        =   1000
  35.          Left            =   2280
  36.          Tag             =   "验证码过期"
  37.          Top             =   360
  38.       End
  39.       Begin VB.Timer Timer2 
  40.          Enabled         =   0   'False
  41.          Interval        =   5000
  42.          Left            =   1560
  43.          Top             =   120
  44.       End
  45.       Begin VB.Timer Timer1 
  46.          Enabled         =   0   'False
  47.          Interval        =   50
  48.          Left            =   600
  49.          Tag             =   "加载验证码"
  50.          Top             =   480
  51.       End
  52.       Begin VB.TextBox Text1 
  53.          Alignment       =   2  'Center
  54.          BeginProperty Font 
  55.             Name            =   "宋体"
  56.             Size            =   12
  57.             Charset         =   134
  58.             Weight          =   400
  59.             Underline       =   0   'False
  60.             Italic          =   0   'False
  61.             Strikethrough   =   0   'False
  62.          EndProperty
  63.          ForeColor       =   &H000000FF&
  64.          Height          =   375
  65.          IMEMode         =   3  'DISABLE
  66.          Left            =   480
  67.          MaxLength       =   4
  68.          TabIndex        =   0
  69.          Top             =   1440
  70.          Width           =   2715
  71.       End
  72.       Begin VB.PictureBox Picture1 
  73.          BorderStyle     =   0  'None
  74.          Height          =   860
  75.          Left            =   860
  76.          MouseIcon       =   "yzm.frx":038A
  77.          MousePointer    =   99  'Custom
  78.          ScaleHeight     =   855
  79.          ScaleWidth      =   1995
  80.          TabIndex        =   2
  81.          TabStop         =   0   'False
  82.          Top             =   360
  83.          Width           =   2000
  84.       End
  85.       Begin MSWinsockLib.Winsock Winsock1 
  86.          Left            =   3120
  87.          Top             =   240
  88.          _ExtentX        =   741
  89.          _ExtentY        =   741
  90.          _Version        =   393216
  91.       End
  92.       Begin VB.Label Label2 
  93.          Alignment       =   2  'Center
  94.          Caption         =   "加载中..."
  95.          BeginProperty Font 
  96.             Name            =   "宋体"
  97.             Size            =   14.25
  98.             Charset         =   134
  99.             Weight          =   400
  100.             Underline       =   0   'False
  101.             Italic          =   0   'False
  102.             Strikethrough   =   0   'False
  103.          EndProperty
  104.          ForeColor       =   &H000000FF&
  105.          Height          =   375
  106.          Left            =   360
  107.          MouseIcon       =   "yzm.frx":04DC
  108.          MousePointer    =   99  'Custom
  109.          TabIndex        =   4
  110.          Top             =   720
  111.          Width           =   3015
  112.       End
  113.       Begin VB.Label Label1 
  114.          Caption         =   "提醒:没有输入验证码,将无法继续操作!"
  115.          Height          =   255
  116.          Left            =   190
  117.          TabIndex        =   3
  118.          Top             =   2160
  119.          Width           =   3375
  120.       End
  121.    End
  122. End
  123. Attribute VB_Name = "yzm"
  124. Attribute VB_GlobalNameSpace = False
  125. Attribute VB_Creatable = False
  126. Attribute VB_PredeclaredId = True
  127. Attribute VB_Exposed = False
  128. '========获取验证码==========
  129. Dim mintFile As Integer     '文件句柄
  130. Dim mblnBegin As Boolean    '记录是否是第一次取得数据
  131. Dim DownGifSize As Long     '已下载的文件大小
  132. Dim GifSize As Long         '文件大小
  133. '========获取验证码==========
  134. Dim login_temp As String
  135. Dim login_qq As Boolean     '记录是否第一次取得数据
  136. Dim login2 As Boolean       '检测是否失败
  137. Dim qqsum As Integer
  138. Dim tqq(50) As String
  139. Dim tmm(50) As String
  140. Dim deletei As Integer
  141. Dim Data_yzm As String
  142. Public js As Integer        '计数
  143. Private Sub shuaxin()
  144.     On Error Resume Next
  145.     '初始相关数据
  146.     Text1.Text = ""
  147.     DownGifSize = 0
  148.     GifSize = 0
  149.     Label2.Caption = "加载中..."
  150.     If mintFile > 1 Then
  151.         Close #mintFile
  152.         mintFile = 0
  153.     End If
  154.     Data_yzm = ""
  155.     If Proxy = 1 Then  '使用代理
  156.         Winsock1.Close
  157.         Winsock1.RemoteHost = Proxy_IP
  158.         Winsock1.RemotePort = Proxy_DK
  159.         Winsock1.Connect
  160.     Else
  161.         With Winsock1
  162.         .Close
  163.         .RemoteHost = "ptlogin2.qq.com"  '得到下载地址的服务器地址
  164.         .RemotePort = 80            'http端口80
  165.         .Connect
  166.         End With
  167.     End If
  168.     Timer2.Interval = 3000      '设置超时为5秒
  169.     Timer2.Enabled = True
  170. End Sub
  171. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  172.     Cancel = True
  173.     yzmqk = False
  174.     yzm.Visible = False
  175.     If guanbitime > 0 And time_c - guanbitime <= 10 Then
  176.        guanbicsi = guanbicsi + 1
  177.        If guanbicsi >= 3 Then
  178.           guanbitime = time_c
  179.           guanbicsi = 0
  180.           Form1.XPButton21.Caption = "开始工作"
  181.           Form1.XPButton21.ForeColor = &HFF&
  182.           Call jilu("系统", MyQQ, "因为您没有输入验证码,现在已停止工作!")
  183.        End If
  184.     Else
  185.        guanbitime = time_c
  186.        guanbicsi = 0
  187.     End If
  188.     Call Form1.qhico(False) '切换图标
  189.     Timer3.Enabled = False
  190.     js = 0
  191. End Sub
  192. Private Sub Label2_Click()
  193. If Label2.Caption = "点击加载验证码" Then
  194.    js = 0
  195.    Call shuaxin
  196. End If
  197. End Sub
  198. Private Sub Picture1_Click()  '点击刷新验证码
  199.     js = 0
  200.     Call shuaxin
  201. End Sub
  202. Private Sub Timer3_Timer()   '自动刷新验证码
  203.     js = js + 1
  204.     If js >= 1800 And Picture1.Visible = True Then
  205.        Label2.Visible = True
  206.        Label2.Caption = "点击加载验证码"
  207.        Picture1.Visible = False
  208.     ElseIf js Mod 180 = 0 And Picture1.Visible = True Then
  209.         js = 0
  210.         Call shuaxin
  211.     End If
  212. End Sub
  213. Private Sub Text1_keypress(KeyAscii As Integer)
  214.     If KeyAscii = 13 Then Command1_Click
  215.     If KeyAscii = 27 Then Text1.Text = ""
  216. End Sub
  217. Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
  218.     Text1.Text = Trim(Text1.Text)
  219.     Form1.bfi = 0
  220.     If Len(Text1.Text) >= 4 Then
  221.         Call Command1_Click
  222.     End If
  223. End Sub
  224. Private Sub Command1_Click()
  225.     If Len(Text1.Text) = 4 Then
  226.        yzmcode = "&validatemsg=" & Text1.Text
  227.        FormTop yzm.hwnd, False
  228.        yzm.Visible = False
  229.        yzmqk = False
  230.        Text1.Text = ""
  231.        Form1.Timer22.Enabled = True
  232.        Form1.bfi = 0
  233.        Timer3.Enabled = False
  234.        js = 0
  235.        Call Form1.qhico(False) '切换图标
  236.        If InStr(FarmCookies, "verifysession=") > 0 Then
  237.           FarmCookies = Replace(FarmCookies, Mid(FarmCookies, InStr(FarmCookies, "verifysession=") + 14, 80), yzmcookies)
  238.        ElseIf InStr(FarmCookies, "verifysession=") = 0 And Len(FarmCookies) > 0 Then
  239.           FarmCookies = FarmCookies & "; verifysession=" & yzmcookies
  240.        End If
  241.     Else
  242.        Text1.SelStart = 0
  243.        Text1.SelLength = Len(Text1.Text)
  244.     End If
  245. End Sub
  246. Private Sub Timer1_Timer()  '加载验证码
  247.     js = 0
  248.     Timer3.Enabled = True
  249.     yzmqk = True
  250.     Timer1.Enabled = False
  251.     Call shuaxin
  252. End Sub
  253. Private Sub Timer2_Timer()   '防止超时
  254.     Timer2.Enabled = False
  255.     If mintFile <> 0 Or Winsock1.State <> sckConnected Then
  256.         If mintFile <> 0 Then Close #mintFile         '关闭文件
  257.         mintFile = 0
  258.         Winsock1.Close
  259.         Picture1.Visible = False
  260.         Label2.Visible = True
  261.         Label2.Caption = "验证码获取失败!"
  262.         Debug.Print "验证码重新获取"
  263.         Call shuaxin: Exit Sub
  264.     End If
  265. End Sub
  266. Private Sub Winsock1_Connect()
  267.     Dim strCommand As String
  268.     Dim proxytemp As String
  269.     Randomize Timer
  270.     If Proxy = 1 Then  '使用代理
  271.         proxytemp = "http://ptlogin2.qq.com"
  272.     End If
  273.     Randomize Timer
  274.     strCommand = "GET " & proxytemp & "/getimage?aid=15000102&" & "0" & Rnd * 1 & Int(Rnd * 50000000 + 1) & " HTTP/1.1" & vbCrLf
  275.     strCommand = strCommand + "Accept: */*" + vbCrLf
  276.     strCommand = strCommand + "Accept-Language: zh-cn" + vbCrLf
  277.     strCommand = strCommand + "Accept-Encoding: gzip, deflate" + vbCrLf
  278.     If Proxy = 1 And Len(Basic) > 0 Then strCommand = strCommand & "Proxy-Authorization: Basic " & Basic & vbCrLf
  279.     strCommand = strCommand & "Host: ptlogin2.qq.com" & vbCrLf
  280.     strCommand = strCommand & "Accept-Language: zh-cn" & vbCrLf
  281.     strCommand = strCommand & "Accept-Encoding: gzip, deflate" & vbCrLf
  282.     strCommand = strCommand & "Connection: Keep-Alive" & vbCrLf
  283.     strCommand = strCommand & "Referer: http://ui.ptlogin2.qq.com/cgi-bin/login?link_target=blank&appid=15000102" & vbCrLf
  284.     strCommand = strCommand & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)" & vbCrLf
  285.     strCommand = strCommand & vbCrLf
  286.     mblnBegin = True    '设置为第一次取得文件数据状态
  287.     Winsock1.SendData strCommand    '发送请求
  288. End Sub
  289. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  290.     On Error Resume Next
  291.     Dim bytData() As Byte
  292.     Dim bytDataHeader() As Byte
  293.     Dim intCrLf As Integer
  294.     Dim http_header As String
  295.     Winsock1.GetData bytData, vbArray + vbByte, bytesTotal '以二进制形式接送数据,这是关键
  296.     If mblnBegin = True Then Data_yzm = Data_yzm & UTF8_Decode(bytData)
  297.     If InStr(Data_yzm, Chr(13) & Chr(10) & Chr(13) & Chr(10)) > 0 Or mblnBegin = False Then
  298.         If mblnBegin = True Then    '如果是首次接收文件
  299.             mblnBegin = False
  300.             Timer2.Enabled = False
  301.             '取得得到数据中的第一个空行,因为空行前面的是HTTP头,而非文件内容
  302.             intCrLf = InStrB(bytData, ChrB(13) & ChrB(10) & ChrB(13) & ChrB(10))
  303.             bytDataHeader = MidB(bytData, 1, intCrLf - 1)
  304.             http_header = Data_yzm
  305.             GifSize = Split(Split(http_header, "Content-Length: ")(1), Chr(13) & Chr(10))(0)  '得到了文件的大小
  306.             yzmcookies = ""
  307.             If InStr(http_header, "verifysession") > 0 Then
  308.                 yzmcookies = Split(Split(http_header, "verifysession=")(1), ";")(0)  '得到验证码的cookies
  309.             End If
  310.             If InStr(http_header, " 200 OK") = 0 Then
  311.                 Picture1.Visible = False
  312.                 Label2.Visible = True
  313.                 Label2.Caption = "验证码获取失败!"
  314.                 Winsock1.Close
  315.                 Exit Sub
  316.             End If
  317.             mintFile = FreeFile()
  318.             Timer2.Enabled = False
  319.             Timer2.Interval = 3000      '设置超时为5秒
  320.             Timer2.Enabled = True  '启动超时机制
  321.             Open Main.SysPath & "yzm" For Binary Access Write As #mintFile
  322.             bytData = MidB(bytData, intCrLf + 4) '这次得到的数据有一部分是文件内容
  323.         End If
  324.         Put #mintFile, , bytData        '写入要保存的文件中
  325.         DownGifSize = DownGifSize + bytesTotal    '改变已下载的文件大小
  326.         If DownGifSize >= GifSize Then   '判断是否已完成下载
  327.             Close #mintFile         '关闭文件
  328.             mintFile = 0
  329.             Winsock1.Close
  330.             Label2.Visible = False
  331.             Timer2.Enabled = False
  332.             Picture1.Picture = LoadPicture("")
  333.             Picture1.Picture = LoadPicture(Main.SysPath & "yzm")
  334.             If Picture1.Picture = 0 Then Debug.Print "验证码重新获取": Call shuaxin: Exit Sub
  335.             Picture1.Visible = True
  336.             Text1.SetFocus
  337.         End If
  338. '        If Winsock1.State = sckConnected And Timer2.Enabled = True Then
  339. '            Picture1.Visible = False
  340. '            Label2.Visible = True
  341. '            Label2.Caption = "验证码获取失败!3"
  342. '            Winsock1.Close
  343. '        End If
  344.     End If
  345. End Sub