梦殇国际

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 刷粉
月光下载 云刷粉软件 云刷粉网页 水贴机电脑版 安卓软件 梦殇导航(教程集合) 有任何问题请点击提问
查看: 3867|回复: 45
打印 上一主题 下一主题

贴吧又可以查IP了 特来分享一下编程思路和部分算法

[复制链接]

24

帖子

0

积分

1049

TBS

UID
7314
积分
0
TBS
1049
智商
944
节操
943
海贝
0
阅读权限
0
在线时间
30 小时
注册时间
2014-3-21
最后登录
2014-4-29
跳转到指定楼层
1
发表于 2014-4-13 23:28:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 STiG 于 2014-4-13 23:33 编辑

获取user_ip 这个很简单 基本上都会吧
查一下ID所在帖子的网页源码 就能找到一串数字
算法和之前的一样 转换成16进制 然后分4段转回10进制 最后颠倒一下顺序 就能得到IP地址了
但是这样挺费时费力的 于是抽空用VB写了这个东西 输入帖子地址和ID 就可以直接获取到IP

基本的东西很简单 不用多说 先用最简单的webbrowser控件载入帖子页面

然后遍历ID 这里要说一下 度娘把ID里面的中文字全部转换成Unicode16进制编码显示了 英文字母 数字 符号保持不变
为了将ID成功转换为度娘接受的模式 我特别翻了一下Unicode编码表 得知英文字母 数字 符号的编码是从32到126 所以条件这样写:

For i = 1 To Len(Text2.Text) 'ID逐字转换
  If AscW(Mid(Text2.Text, i, 1)) > 31 And AscW(Mid(Text2.Text, i, 1)) < 127 Then 'AscW将字符转换为Unicode10进制编码
    j = j & Mid(Text2.Text, i, 1) '如果字符的编码是从32到126 那就不用转换 直接读取到变量j里面
  Else
    j = j & "\u" & LCase(Hex(AscW(Mid(Text2.Text, i, 1)))) '反之 转换为Unicode16进制编码并小写再读取到变量j里面
  End If
Next '最终得出的j便是度娘可接受的模式了 这样 我们便可以用这个j来做遍历了

为什么要遍历ID 不直接遍历user_ip 然后再根据几楼来确定
那是因为user_ip不是在body里面 一个ID只会有一个user_ip
如果一个帖子里面 一个ID回复了两次或者两次以上 那么就根本无法使用几楼来确定了

k = InStr(WebBrowser1.Document.documentelement.innerhtml, j) '首先查找ID起始于整个页面的第几个字符 赋值给k
k = InStr(k - 33, WebBrowser1.Document.documentelement.innerhtml, "user_ip")
  ' 往前退33个字符(user_ip是在ID的前面 这个33是我随便写的 当时没去数要退多少个) 然后找到"user_ip"起始位置  
a = Val(Mid(WebBrowser1.Document.documentelement.innerhtml, k + 9, 10))
  ' 然后再往后进9个字符(user_ip":一共9个字符) 用Mid获取10个字符(FFFFFFFF转换为10进制是4294967295 最多10个字符)
  ' 少一两个字符也不怕 Val可以强制转换为数字变量 然后复制给a 这个a自然就是那个需要转换的IP地址了

这里开始才是算法的核心 一开始我也以为很简单 用Hex函数直接把10进制数转换为16进制不就行了 后来发现 没这么简单
问题在于Hex函数最多只能转换Long型整数 VB中Long型最大值才2147483647 远低于4294967295(早知道就不用VB写了 坑爹)
于是我自己写了一个算法 这里用到了10进制转2进制的思路 先算末位

b = a / 16 'a就是刚刚的user_ip 除以16 这里VB自动识别成浮点型的除法 明显不会再和Long型扯上什么关系了
c = InStr(b, ".") '如果不能被整除 那么b自然就是一个小数 于是找到小数点
e = a - Mid(b, 1, c - 1) * 16 '获取整数部分 乘以16 然后用a去减 就能得出余数了 这个余数就是user_ip 16进制的末位
If e = 10 Then
  e = "A"
ElseIf e = 11 Then
  e = "B"
ElseIf e = 12 Then
  e = "C"
ElseIf e = 13 Then
  e = "D"
ElseIf e = 14 Then
  e = "E"
ElseIf e = 15 Then
  e = "F"
End If '这里按照16进制的表示法来 然后这样:

d = Hex(Mid(b, 1, c - 1)) & e
'这里要注意的是 就算最大4294967295 除以16也会远小于Long型的限制 所以我们放心使用Hex函数吧
'获取前面的16进制位数 然后加上最后一位

好了 这个时候 这个d就是user_ip 16进制的表现形式 然后我们要分段 颠倒一下顺序 就能获取IP地址了 这个我写在一个循环里面了

For i = Len(d) To 1 Step -2 '步频-2 每次减2 两位为一段 倒序读取 重新转换为10进制
  If i = 1 Then '有时候得出的d是7位 那么明显就是ip的最后一位只用一个16进制数表示 前面三段如果出现这种情况都会加一个0
    Text3.Text = Text3.Text & CLng("&H" & Mid(d, i, 1))
  Else
    Text3.Text = Text3.Text & CLng("&H" & Mid(d, i - 1, 2))
    If i > 2 Then
      Text3.Text = Text3.Text & "." '别忘了IP地址里面的点
    End If
  End If
Next

搞定 各位可以按照我的思路去试试 估计再过一段时间 这个user_ip的BUG又得修复了 到时候咱再想办法


评分

参与人数 1TBS +1 收起 理由
华彩篇章 + 1

查看全部评分

全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复

使用道具 举报

308

帖子

119

积分

312

TBS

UID
8946
积分
119
TBS
312
智商
655
节操
735
海贝
37
阅读权限
20
在线时间
53 小时
注册时间
2014-4-13
最后登录
2019-4-21
QQ
2
发表于 2014-4-13 23:31:26 | 只看该作者
我看不懂怎么办
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

22万

帖子

6万

积分

6万

TBS

❤牵着我的手❤闭着眼睛走你也不会迷路❤

UID
77
积分
67552
TBS
65989
智商
75025
节操
75016
海贝
1142
阅读权限
150
在线时间
6092 小时
注册时间
2014-1-2
最后登录
2023-6-29

二逼青年榜上有名在线时间长水货统领签到达人

QQ
3
发表于 2014-4-13 23:33:18 | 只看该作者
看一堆乱码就头晕
回复 支持 反对

使用道具 举报

<

2万

帖子

7686

积分

219

TBS

心为木之所惜 木为心之所倚 :木犀

UID
64
积分
7686
TBS
219
智商
6216
节操
8031
海贝
325
阅读权限
200
在线时间
1927 小时
注册时间
2014-1-1
最后登录
2024-7-13

二逼青年榜上有名在线时间长签到达人

QQ
4
发表于 2014-4-13 23:37:15 | 只看该作者
又遇 技术帝 睡觉明天研究
回复 支持 反对

使用道具 举报

1560

帖子

1622

积分

1407

TBS

UID
8925
积分
1622
TBS
1407
智商
1856
节操
2468
海贝
13
阅读权限
50
在线时间
188 小时
注册时间
2014-4-13
最后登录
2016-6-2
5
发表于 2014-4-13 23:37:17 | 只看该作者
看不懂的给跪了。。。。。电脑小白的我。。。
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

397

帖子

167

积分

367

TBS

UID
2529
积分
167
TBS
367
智商
472
节操
492
海贝
71
阅读权限
20
在线时间
170 小时
注册时间
2014-1-20
最后登录
2017-6-26
6
发表于 2014-4-13 23:50:54 | 只看该作者
不懂 坐等机器
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

2185

帖子

846

积分

1310

TBS

UID
7522
积分
846
TBS
1310
智商
2240
节操
2096
海贝
242
阅读权限
40
在线时间
838 小时
注册时间
2014-3-24
最后登录
2019-1-13
7
发表于 2014-4-14 00:37:09 | 只看该作者
又遇 技术帝
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

24

帖子

0

积分

1049

TBS

UID
7314
积分
0
TBS
1049
智商
944
节操
943
海贝
0
阅读权限
0
在线时间
30 小时
注册时间
2014-3-21
最后登录
2014-4-29
8
 楼主| 发表于 2014-4-14 08:55:58 | 只看该作者
有这些东西 机器做起来很简单
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

24

帖子

0

积分

978

TBS

UID
7146
积分
0
TBS
978
智商
1008
节操
1008
海贝
0
阅读权限
0
在线时间
3 小时
注册时间
2014-3-18
最后登录
2014-4-23
9
发表于 2014-4-14 17:30:01 | 只看该作者
大神求机器
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

1177

帖子

0

积分

1260

TBS

UID
394
积分
0
TBS
1260
智商
1242
节操
1331
海贝
0
阅读权限
0
在线时间
62 小时
注册时间
2014-1-3
最后登录
2015-3-28
10
发表于 2014-4-14 17:30:21 爪机党 | 只看该作者
看不懂  给跪了。
全站禁止灌水,后果自负 月光爆吧器 积分充值 签名档设置 积分记录 新人必备
梦殇qq群 欢迎加入群内禁止传播黄色信息!
①群:515706814 爆吧□顶贴□机器 ②群:94025161 贴吧推广□爆吧□软件 ③群:549343908 营销推广□贴吧□软件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-11-25 06:06,Processed in 0.039885 second(s), 40 queries.

Powered by Discuz!X3.4© 2001-2013 Comsenz Inc. 手机版|黑名单|站点地图|RGB转16进制|梦殇国际 MSI

贴吧交流群:172119290 | 编程交流群:232677917 | 官方YY频道:13234704 | 本站所有软件仅供学习交流使用!

工信部备案:赣ICP备14004172号-1 | 如有需要请联系 邮箱:541641237#qq.com (点击发邮件)

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