请选择 进入手机版 | 继续访问电脑版

我爱科技论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 282|回复: 1

[黑科技] 【黑科技】开发一个可以根据IP地址获取IP归属详细地址的黑科技软件

[复制链接]

696

主题

743

帖子

7593

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7593

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2018-10-22 18:59:08 | 显示全部楼层 |阅读模式
1. 需求其实很简单,就是开发一个可以获取IP地址的工具,实现方式1就是利用一些现有的接口进行获取,这种方式就是简单快捷,比如可以使用淘宝的接口:http://ip.taobao.com/service/getIpInfo.php?ip=, 后面跟上你的IP地址就行

实现的java的代码如下,基本上传入你的IP地址就可以了。
[Java] 纯文本查看 复制代码
  /**
     * 发送http请求
     * @param url
     * @param content
     * @return
     */
    public static Map<String, Object> request(String url, String content) {
        Map<String, Object> result = new HashMap<String, Object>();
        String errorStr = "";
        String status = "";
        String response = "";
        PrintWriter out = null;
        BufferedReader in = null;
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;
            // 设置请求属性
            httpUrlConnection.setRequestProperty("Content-Type", "application/json");
            httpUrlConnection.setRequestProperty("x-adviewrtb-version", "2.1");
            // 发送POST请求必须设置如下两行
            httpUrlConnection.setDoOutput(true);
            httpUrlConnection.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(httpUrlConnection.getOutputStream());
            // 发送请求参数
            out.write(content);
            // flush输出流的缓冲
            out.flush();
            httpUrlConnection.connect();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(), "UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                response += line;
            }
            status = new Integer(httpUrlConnection.getResponseCode()).toString();
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            errorStr = e.getMessage();
        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) { out.close();}
                if (in != null) {in.close();}
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

        result.put("errorStr", errorStr);
        result.put("response", response);
        result.put("status", status);
        return result;

    }

    /**
     * 通过接口获取IP地址
     * @param ip
     * @return
     */
    public static String getLocationByIP(String ip){
        String taobao_server = "http://ip.taobao.com/service/getIpInfo.php?ip="+ip;
        Map<String, Object> objectMap = request(taobao_server, "");
        // 转换为json对象
        String status = objectMap.get("status").toString();
        if (status.equals("200")) {
            Object data = objectMap.get("response");
            JSONObject jsonObject = JSONObject.fromObject(JSONObject.fromObject(data).getString("data"));
            String country = jsonObject.get("country").toString();
            String region = jsonObject.get("region").toString();
            String city = jsonObject.get("city").toString();
            String isp = jsonObject.get("isp").toString();
            String address = country + region+ city + isp;
            return address;
        } else {
            return "未知地址";
        }

    }


2.第二种方法,http://update.cz88.net/soft/setup.zip,到这个网站去下载一个IP地址库,然后到处为一个txt文件,最后通过Navicat等工具直接把数据导入到数据库,最后通过数据查询到 方式来获取IP,这种方式相对来说要更加高效了,基本上也不用受网络因素的影响。所以推荐大家使用第二种,当然如果只是进行测试使用,使用第一种也是更方便些。





上一篇:【C++游戏开发实战】2018最新的C++系列黑客攻防安全网络工程师全套视频教程完整版
下一篇:【浏览器插件】一款可以高效进行网站技术分析的Wappalyzer插件
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案; 如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】。
回复过本主题
的还回复过:

0

主题

8

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2020-4-12 20:19:55 | 显示全部楼层
学习一下
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案; 如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】。
回复

使用道具 举报

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

本版积分规则

微信扫一扫

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