以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]ip获取浏览器行HttpClient不行的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136731) |
-- 作者:浙江仔 -- 发布时间:2019/6/20 8:52:00 -- [求助]ip获取浏览器行HttpClient不行的问题 用浏览器打开http://www.ip138.com/,显示本机的外网ip,正常 但是使用HttpClient,无法连接 Dim url As String = "http://www.ip138.com/" Dim hc As New HttpClient(url) Dim ret As String = hc.GetData() msgbox(ret) 是不是对方服务器限制了什么参数,需要提交过去?比如说User-Agent 该怎么设置? |
-- 作者:有点甜 -- 发布时间:2019/6/20 9:07:00 -- 比如
Dim body As String = "" Dim stm As System.IO.Stream = pos.GetResponseStream() msgbox(str)
|
-- 作者:浙江仔 -- 发布时间:2019/6/20 9:34:00 -- HttpClient 有没有hc.UserAgent? |
-- 作者:有点甜 -- 发布时间:2019/6/20 9:42:00 -- 以下是引用浙江仔在2019/6/20 9:34:00的发言:
HttpClient 有没有hc.UserAgent?
目前不能设置这些。 |
-- 作者:浙江仔 -- 发布时间:2019/6/20 10:14:00 -- 谢谢,能获取网页框架数据,但是ip地址这数据获取不到,如图中红框的,不在str中 [此贴子已经被作者于2019/6/20 10:20:26编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/6/20 10:23:00 --
要改成这个地址,如 http://200019.ip138.com/
这个地址每年不是固定的。 |
-- 作者:浙江仔 -- 发布时间:2019/6/20 11:44:00 -- 通过两次获取,第一次获取地址,然后用这个地址获取真实ip \'\'\' Dim req = System.Net.WebRequest.Create("http://www.ip138.com") req.C req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; rv:57.0) Gecko/20100101 Firefox/57.0" Dim pos = req.GetResponse Dim stm As System.IO.Stream = pos.GetResponseStream() Dim reader As New System.IO.StreamReader(stm,Encoding.Default) Dim str As String = reader.ReadToEnd pos.Close stm.Close reader.close Dim start As Integer = str.IndexOf("<iframe src=") Dim End1 As Integer =str.IndexOf("nofollow") Dim ret As String If start >0 And End1 >start Then Dim url As String =trim(str.SubString(start+13,End1-start-20)) \'IP地址,最多15个字符 Dim hc As New HttpClient(url) ret = hc.GetData() End If Dim s1 As Integer =ret.Indexof(":[") Dim s2 As Integer =ret.Indexof("来自:") Dim ip91,ip92 As String If s1>0 And s2>s1 Then ip91 =trim(ret.SubString(s1+2,s2-s1-4)) Dim ss As String =ret.SubString(s2,20) Dim s3 As Integer =ss.Indexof("</p>") ip92=ss.SubString(3,s3-3) End If |
-- 作者:有点甜 -- 发布时间:2019/6/20 11:58:00 -- 直接用正则匹配即可,如
Dim req = System.Net.WebRequest.Create("http://www.ip138.com") Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=iframe src="").*?(?="" rel)") mc = System.Text.RegularExpressions.Regex.Matches(ret , "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+") |
-- 作者:浙江仔 -- 发布时间:2019/6/20 13:50:00 -- 谢谢 |