手机号码归属地查询
- 本文是用来如果你没有自己的数据库,又想得到手机号码的归属地,介绍一个盗取别人post的一个方法。本文涉及的一个网站,只是做一个例子,没有企图攻击欺骗,或者任何商业用途,只是单纯的技术研究,所以请大家不要进行非法的用途。
- 还是先看效果
- 首先要用到上一个blog中提到的Fiddler软件。打开,然后找个自己的目标地址。在原地址中进行数据的输入。点击查询按钮之后,按Fiddler中截获了什么内容。
具体的说就是,在输入手机号码段的对话框中输入想要查询的号码短。之后查询,发现Fiddler的webSession中就会出现相应的数据交换,右侧的Session Inspector中的webForms和TextView就会显示出来,发送了也就是post过去了什么东西。由此可以得知数据是什么。多试几次,会发现一些规律。有些时候会拼凑一些%和16进制的数据一起向Server段发送。
- 接下来要做的工作就是要处理html代码了。如何发送数据和读取结果。使用的是HttpWebRequest中的。如下。
/// <summary>
/// Web request and get the web post methods
/// </summary>
/// <param name="url"></param>
/// <param name="postData"></param>
/// <param name="err"></param>
/// <returns></returns>
public static string HttpWebResponsePost(string url, string postData, out string err)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.Default;
byte[] data = encoding.GetBytes(postData);
try
{
request = WebRequest.Create(url) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
response = request.GetResponse() as HttpWebResponse;
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
string content = sr.ReadToEnd();
err = string.Empty;
return content;
}
catch (Exception ex)
{
err = ex.Message;
return string.Empty;
}
} - 接下来就是初始化参数,函数调用,处理需要的数据了。数据的处理可以使用String中的那些函数。一步一步的分析。或者熟悉正则表达式的,直接上正则,和爬虫一个做法。
protected void btnSub_Click(object sender, EventArgs e)
{
string aUrl = "";//输入地址
string err = "show out error";
string moblie = this.tbNum.Text;
string postData = string.Empty;
postData = "mobile=" + moblie + "";//拼凑出来要发送的数据
string aHtml = HttpWebResponsePost(aUrl, postData, out err);
aHtml = GetTableHtml(aHtml);
result.Visible = true;
result.InnerHtml = aHtml;
}
- 我的处理方法是,索性就提取远网站的table中的所有内容,直接拿过来用:)如果嫌弃他的table设计,或者有所舍取,那么自己进去对table自己分析吧。循环得到数据值之后,放到自己设计的样式中。
作者:Alexliu(alex dotNet Learning)
出处:http://alexliu.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,转载请注明。并且保留文章链接。否则保留追究法律责任的权利。