精华内容
下载资源
问答
  • Java获取本地ip地址

    千次阅读 2018-09-14 11:58:34
    下面先粘出我在生产环境中没有获取到ip地址的一般简单的获取ip地址的流程,最后面是我的解决方法(代码): public static String getLocalIpAddr() { Enumeration<NetworkInterface> networks...

    获取本地ip地址本来是应该很简单的,但是在项目中本地实现了之后,放到生产环境却不行了,一直获取不到本地ip.

    下面先粘出我在生产环境中没有获取到ip地址的一般简单的获取ip地址的流程,最后面是我的解决方法(代码):

    public static String getLocalIpAddr() {
        Enumeration<NetworkInterface> networks = null;
        try {
            // 获取网卡设备
            networks = NetworkInterface.getNetworkInterfaces();
        } catch (SocketException e) {
            logger.info(e.getMessage());
        }
        InetAddress ip = null;
        Enumeration<InetAddress> addrs;
        // 遍历网卡设备
        while (networks.hasMoreElements()){
            addrs = networks.nextElement().getInetAddresses();
            while (addrs.hasMoreElements()){
                ip = addrs.nextElement();
                if (ip != null && ip instanceof InetAddress && ip.isSiteLocalAddress()){
                    if (ip.getHostAddress()==null || "".equals(ip.getHostAddress())){
                        logger.info("获取到的客户端内网ip为空,从配置文件读取本地ip。");
                        return null;
                    }
                    return ip.getHostAddress();// 客户端ip
                }
            }
        }
        return null;
    }

     

    这样获取在生产环境中出现了ip地址获取不到的情况,因此修改成下面的非常规方法来获取了(皮一下,哈哈):

     

    public static String getLocalIpAddr() {
    
        String clientIP = null;
        Enumeration<NetworkInterface> networks = null;
        try {
            //获取所有网卡设备
            networks = NetworkInterface.getNetworkInterfaces();
            if (networks == null) {
                //没有网卡设备 打印日志  返回null结束
                logger.info("networks  is null");
                return null;
            }
        } catch (SocketException e) {
            System.out.println(e.getMessage());
        }
        InetAddress ip;
        Enumeration<InetAddress> addrs;
        // 遍历网卡设备
        while (networks.hasMoreElements()) {
            NetworkInterface ni = networks.nextElement();
            try {
                //过滤掉 loopback设备、虚拟网卡
                if (!ni.isUp() || ni.isLoopback() || ni.isVirtual()) {
                    continue;
                }
            } catch (SocketException e) {
                logger.info(e.getMessage());
            }
            addrs = ni.getInetAddresses();
            if (addrs == null) {
                logger.info("InetAddress is null");
                continue;
            }
            // 遍历InetAddress信息
            while (addrs.hasMoreElements()) {
                ip = addrs.nextElement();
                if (!ip.isLoopbackAddress() && ip.isSiteLocalAddress() && ip.getHostAddress().indexOf(":") == -1) {
                    try {
                        clientIP = ip.toString().split("/")[1];
                    } catch (ArrayIndexOutOfBoundsException e) {
                        clientIP = null;
                    }
                }
            }
        }
        return clientIP;
    }

     

    因为打印InetAddress对象的时候会打印成  /xxx.xxx.xxx.xxx  这样的格式,所以直接就将这个字符串解析了,虽然比较粗暴,但是也是有效的。

    展开全文
  • 获取网站IP地址

    千次阅读 2014-09-24 14:28:43
    获取网站IP地址的方法有很多,最常用的便是使用CMD命令中的ping命令,ping命令也是最常用的网络命令 使用ping命令获取网站Ip地址的格式:ping + 网站的域名 如获取百度的IP地址的方式: ping + ...

    获取网站的IP地址的方法有很多,最常用的便是使用CMD命令中的ping命令,ping命令也是最常用的网络命令

    使用ping命令获取网站的Ip地址的格式:ping +  网站的域名

    如获取百度的IP地址的方式: ping + www.baidu.com

    测试效果:

    打开CMD


    输入 ping www.baidu.com后单击回车


    通过Winscoket编程的方式也可以获取网站的IP地址

    程序代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock2.h>
    
    //连接Winsock库
    #pragma comment(lib, "ws2_32.lib")
    
    void main()
    {
        //调用WSAtartup初始化Winsock库
        WSADATA wsaData;
        ::WSAStartup(
            MAKEWORD(2,2),//版本号为2.2
            &wsaData
            );
    
        char szHost[256];//存放域名或服务器名
    
        printf("请输入需要解析的域名:");
        scanf("%s", szHost);
    
        hostent *pHost = ::gethostbyname(szHost);//通过主机名得到地址信息
    
        //一个主机可能有多个网卡、多个IP、下面的代码输出所有的IP地址
        in_addr addr;
    
        for(int i=0; ; i++)
        {
            //获得地址(网络字节)
            char *p = pHost->h_addr_list[i];
    
            if(NULL == p)
            {
                break;//退出循环
            }
    
            //将地址拷贝到in_addr结构体中
            memcpy(&addr.S_un.S_addr, p, pHost->h_length);
    
            //将in_addr转换为主机字节序
            char *strIP = ::inet_ntoa(addr);
    
            //打印IP地址
            printf("%s的第%d个IP地址是:: %s\n", szHost, i+1, strIP);
        }
    
        system("pause");
    }

    执行结果:

    展开全文
  • 获取对方ip地址

    千次阅读 2020-04-07 22:43:54
    当然了获取对方IP地址的方法很多,但是最简单的是使用一个软件就可以获取对方的IP地址,然后可以在网上查这个IP地址。 关于IP地址查定位不准确问题: 1、 针对wifi数据来讲 精准度来讲的话还算可以 ,百度查出来的为...

    现在网络中骗子很多,防不胜防,所以在社交过程中就需要辨别和你聊天的人是不是本人,可以通过IP地址来查出使用这个qq号的人大概所在地,当然不能说是很精确。
    当然了获取对方IP地址的方法很多,但是最简单的是使用一个软件就可以获取对方的IP地址,然后可以在网上查这个IP地址。
    关于IP地址查定位不准确问题:
    1、 针对wifi数据来讲 精准度来讲的话还算可以 ,百度查出来的为什么有偏差 因为都是大数据 大数据只是大概没有精准
    2、针对4G数据来讲 精准度误差大跨区都很正常 更别说百度查出来的偏差了
    3、wifi的话可以做到精准定位 原理很简单: wifi首先对应相对应的宽带 而我们每个人办理宽带入网的时候登记的都有地址 出的位置就是登记的地址精准到门户 ,搬迁的怎么办? 搬迁过后原来的宽带地址会更新到新的位置
    4、操作方法:
    在电脑上登录自己的qq然后打qq电话给好友,然后对方的IP地址就会被获取,
    在这里插入图片描述
    5、查IP的网址很多:https://www.ipplus360.com/search/ip/?ip=1.81.172.82
    输入所获取的IP地址即可查询,位置并不会特别精确,
    需要软件的可以关注我,或者私信我

    展开全文
  • 获取代理IP地址

    万次阅读 2018-06-29 10:36:42
    很多时候,需要用到代理IP。比如在开发爬虫程序的时候,为了反爬,需要使用...从指定的网站抓取代理IP地址并存入数据库all_ip_table中,当前抓取的地址包括: 西刺网站 快代理网站 66代理网站 89代理网站 秘密代理...

    作者博客地址:http://www.yooongchun.cn/

    很多时候,需要用到代理IP。比如在开发爬虫程序的时候,为了反爬,需要使用代理IP。


    首先给出程序实现的功能,然后再来说明开发思路:

    • 完整代码下载地址:
      https://github.com/yooongchun/ProxyIP

    • 功能:

      • 从指定的网站抓取代理IP地址并存入数据库all_ip_table中,当前抓取的地址包括:
        • 西刺网站
        • 快代理网站
        • 66代理网站
        • 89代理网站
        • 秘密代理网站
        • data5u网站
        • 免费代理IP网站
        • 云代理网站
        • 全网代理网站
      • 对保存在数据库表all_ip_table中的IP地址进行定时筛选,有效的添加到ip_table 中,无效的删除
      • 对保存在ip_table中的IP地址进行定期校验,无效的删除
    • 基本逻辑:

      • 程序包含了4个.py文件,各个模块功能如下:

        • config 模块用来配置程序信息打印级别和打印位置你只需要在该位置的config 函数中指定参数然后在别的模块中这样调用:

          import config
          config.config()
          
        • database 模块用来提供存储数据库操作,包括:添加到数据库、从数据库中获取和删除操作,你只需要这样调用:

          from database import IP_Pool
          pool=IP_Pool(database_name,ip_table_name)
          pool.push(ip_list)# 存入
          pool.pull(random_flag)# 取出,random_flag 为True时随机取一个
          pool.delete(ip) # 删除,ip为None时删除所有记录
          
        • UA模块用来提供网络请求头,主要是UA和referer,该模块用来模拟不同的浏览器请求头,这样调用:

          from UA import FakeUserAgent
          headers=FakeUserAgent().get_random_headers()
          
        • ProxyIP 模块是程序的核心模块,包含了两个类,Crawl 类用来抓取IP,使用多线程模式抓取,Validation 类用来校验IP,其中multiple_filter 函数用来从all_ip_table 中筛选有效IP,而multiple_validation 用来从ip_table中定时校验IP,无效删除,启用该模块即可运行抓取和校验进程,用法:

          启动main函数即可启用抓取进程和验证进程(双进程模式)。

          mian()
          

          如果只想启用抓取IP的进程,则运行:

          crawl=Crawl(database_name, valid_ip_table_name, all_ip_table_name)
          crawl.run()
          

          如果只想启用验证进程,则运行:

          validation=Validation(database_name, valid_ip_table_name,all_ip_table_name)
          validation.run()
          

    以下简要说明开发的思路:

    • 首先需要到提供代理IP的网站去抓取代理IP,使用的网站已经列举在文章开头。这里涉及两个主要内容:去网站上请求网页,然后解析网页获取IP地址。请求网页使用requests 库,最简单的请求方式为:

      response = requests.get(url)
      

      有时,请求次数过多,也会被网站禁止访问,因而可以使用代理IP去请求:

      response = requests.get(url=url, headers=headers,proxies=proxies,timeout=5)
      

      这里,headers 是请求头,proxies是代理IP,代理IP构造方式为:

      proxies={"http": "http://" + IP+":"+PORT,"https":"https://"+IP+":"+PORT} # IP地址+端口
      

      获得请求的网页之后,判断返回是否正确:

      response.status_code==200
      

      若返回正确,则可进行网页解析。网页解析使用BeautifulSoup 库,Python3Windows10 环境下使用pip3 命令安装:

      pip3 install bs4
      

      要获取解析内容,先要知道返回的网页结构,可以通过Google 浏览器查看网页结构:

      打开网页--按下F12--选择Elements
      

      经过查看,发现IP地址均储存在td 标签下,使用正则表达式来提取:

      all_ip = []
      soup = BeautifulSoup(html, "lxml")
      tds = soup.find_all("td")
      for index, td in enumerate(tds):
          if not re.match(r"^\d+\.\d+\.\d+\.\d+$",re.sub(r"\s+|\n+|\t+", "", td.text)):
              pass
          all_ip.append(re.sub(r"\s+|\n+|\t+", "", td.text))
      

      这里用到一个lxml解析库,没有的话需要单独安装:

      pip3 install lxml
      
    • 接下来需要把IP地址储存到数据库中,方便使用,储存用到的数据库是SQLite,基本操作包括:

      加入数据库:

      def push(self, IP_list):
          '''存储IP,传入一个列表,格式为[[IP,PORT,ADDRESS,TYPE,PROTOCOL],...]'''
          logging.info(u"写入数据库表:%s..." % (self.__table_name))
          try:
              conn = sqlite3.connect(self.__database_name, isolation_level=None)
              conn.execute(
                  "create table if not exists %s(IP CHAR(20) UNIQUE, PORT INTEGER,ADDRESS CHAR(50),TYPE CHAR(50),PROTOCOL CHAR(50))"
                  % self.__table_name)
              except Exception:
                  logging.error("连接数据库出错,退出:{}".format(self.__database_name))
                  return
              for one in IP_list:
                  if len(one) < 5:
                      logging.error("IP格式不正确:{},跳过!".format(one))
                      continue
                      conn.execute(
                          "insert or ignore into %s(IP,PORT,ADDRESS,TYPE,PROTOCOL) values (?,?,?,?,?)"
                          % (self.__table_name),
                          (one[0], one[1], one[2], one[3], one[4]))
                      conn.commit()
                      conn.close()
      
      

      从数据库中提取:

      
      def pull(self, random_flag=False):
          '''获取IP,返回一个列表'''
          try:
              conn = sqlite3.connect(self.__database_name, isolation_level=None)
              conn.execute(
                  "create table if not exists %s(IP CHAR(20) UNIQUE, PORT INTEGER,ADDRESS CHAR(50),TYPE CHAR(50),PROTOCOL CHAR(50))"
                  % self.__table_name)
              except Exception:
                  logging.error("连接数据库出错:{}".format(self.__database_name))
                  return
              cur = conn.cursor()
              if random_flag:
                  cur.execute("select * from %s order by random() limit 1" %
                              self.__table_name)
                  response = cur.fetchone()
                  else:
                      cur.execute("select * from %s" % self.__table_name)
                      response = cur.fetchall()
                      cur.close()
                      conn.close()
                      return response
      
      

      以及删除:

      
      def delete(self, IP=None):
          '''删除指定的记录'''
          try:
              conn = sqlite3.connect(self.__database_name, isolation_level=None)
              conn.execute(
                  "create table if not exists %s(IP CHAR(20) UNIQUE, PORT INTEGER,ADDRESS CHAR(50),TYPE CHAR(50),PROTOCOL CHAR(50))"
                  % self.__table_name)
              except Exception:
                  logging.error("连接数据库出错:{}".format(self.__database_name))
                  return
              cur = conn.cursor()
              if IP is not None:
                  logging.info(u"删除记录:{}\t{}".format(self.__table_name, IP[0]))
                  cur.execute("delete from %s where IP=?" % self.__table_name,
                              (IP[0], ))
                  else:
                      logging.info(u"删除所有记录:{}".format(self.__table_name))
                      cur.execute("delete from %s" % self.__table_name)
                      cur.close()
                      conn.close()
      
    • 然后需要对数据进行校验。包括从抓取到的IP中进行筛选有效IP和对有效IP进行定期校验,校验用到的网址为:http://httpbin.org/get 校验的思路就是用获得的IP构造代理IP,使用随机请求头取访问该网址,如果访问正常,说明该IP有效,则添加到数据库中,校验函数:

      def __check_ip_validation(self, ip):
              '''校验IP地址有效性'''
              try:
                  IP = str(ip[0]) + ":" + str(ip[1])
              except Exception:
                  return None
              re_conn_time = 2
              cnt = 0
              while cnt < re_conn_time:
                  cnt += 1
                  try:
                      proxies = {"http": "http://" + IP}
                      response = requests.get(
                          url=self.__URL,
                          headers=FakeUserAgent().get_random_headers(),
                          proxies=proxies,
                          timeout=5)
                  except Exception:
                      time.sleep(2 * random.random())
                      response = None
              if response is None:
                  return
              if int(response.status_code) == 200 and IP.split(
                      ":")[0] in response.text:
                  return True
              else:
                  return False
      

      注意:从网站上获取到的IP有的是非高匿的(虽然用了代理,但是网站仍能够知道你的真实IP),因而还需要校验IP地址是否高匿,方法非常简单,因为抓取的时候保存了此信息,只需要判断一下即可:

      def __check_ip_anonumous(self, ip):
              '''检验IP是否高匿名'''
              if "高匿" in str(ip):
                  return True
              else:
                  return False
      
    • 接下来就是一些琐碎的处理,包括信息打印,异常处理等等。另外,上面给出的代码都是核心语句,并不是完整代码,完整代码请到github 下载,地址:https://github.com/yooongchun/ProxyIP。


    最后,联系信息:

    • 获得帮助与建议反馈:

      任何时候,欢迎联系作者yooongchun :Email:yooongchun@foxmail.com

    • 更多有趣/实用内容,关注我:

      • 微信公众号: yooongchun小屋
      • CSDN: https://blog.csdn.net/zyc121561
      • github: https://github.com/yooongchun
    展开全文
  • 想必大家对这段代码并不陌生: public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-... if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip
  • IP地址获取】java获取客户端ip地址

    万次阅读 2018-08-31 16:44:38
    如何获取客户端ip和url访问中服务器端ip(如果是ip,不是域名)呢? String requestUrlIP = request.getServerName(); tring userIpAddr = request.getRemoteAddr(); System.out.println("***访问的Url中的...
  • iOS获取设备IP地址

    万次阅读 2016-04-12 17:03:39
    项目用到要获取iOS设备的IP地址,有2种方法: 1)第一种比较简单,但是只有当你的设备连接到WIFI时才能获取IP地址,倘若你的设备用的是流量,那就不行。代码如下: #import #import // Get IP Address - ...
  • springboot 获取客户端IP地址方法

    万次阅读 2019-07-11 11:29:19
    在使用springboot时,需要获取访问客户端的IP地址, //获取客户端IP地址 private String getIpAddress() { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || ...
  • 获取对外的IP地址获取本机在局域网中的IP地址
  • VC 获取本地ip地址

    千次阅读 2016-11-30 23:10:37
    获取本地IP地址有两种做法。一种是使用gethostname函数,代码如下: [cpp] view plain copy   bool CSocketComm::GetLocalAddress(std::string& strAddress)  {   char...
  • Java获取当前ip地址

    万次阅读 2019-05-13 21:41:05
    import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressInUse { public static void main(String[] args){ ... InetAddress ip4 =...
  • Vue 之获取本地IP地址

    千次阅读 2018-12-03 11:23:41
    vue 获取本地IP地址 1 书写vue搭建 var vm = new Vue({ el:&quot;#app&quot;, data:{ user:{ &quot;username&quot;:&quot;&quot;, &quot;passwoed&quot;:&quot;...
  • C# 获取IP地址

    千次阅读 2016-11-03 17:27:20
    一、Asp.Net 获取客户端Ip地址: 参考:http://blog.163.com/m13864039250_1/blog/static/213865248201461221050926/ Asp.Net获取客户端信息: ... 二、使用
  • webservice获取客户端IP地址

    万次阅读 2015-07-14 21:49:20
    基于JDK6 jax-ws开发的webservice获取客户端IP地址 Endpoint.publish() 轻量级HTTP服务发布 在web容器tomcat下发布 基于XFire开发的webservice获取客户端IP地址 基于Axis开发的webservice获取客户端IP地址...
  • C# 网站 获取客户端IP地址详细信息

    千次阅读 2017-12-01 12:56:20
    /// 获取web客户端ip地址详细信息 /// &lt;/summary&gt; /// &lt;returns&gt;&lt;/returns&gt; public static string GetClientIPKLocationKV() { string ret = string.Empty; string ...
  • virtualbox从命令行获取虚拟机ip地址

    万次阅读 2016-10-24 02:05:34
    virtualbox从命令行获取虚拟机ip地址找到ip地址相关信息所在行VBoxManage guestproperty enumerate VM_NAME | grep "Net.*V4.*IP"直接提取出ip地址,从一个”,”分割的列表中找出第2个键值对,将前面的键值与冒号...
  • C#获取本地IP地址

    千次阅读 2019-01-08 08:18:56
    2012-06-05 /// &lt;summary&gt;... /// 获取本地IP地址信息 /// &lt;/summary&gt; void GetAddressIP() { ///获取本地的IP地址 string AddressIP = string.Empt...
  • Java获取ip地址

    千次阅读 2020-06-11 00:12:51
    需求:获取app端ip地址,并调用接口查询ip归属地。 bug:ip地址获取不一致。 2.ip归属地查询接口 淘宝API接口 http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 测试过了没用,一直返回 {"msg":...
  • Spring 获取客户端IP地址

    千次阅读 2018-12-24 09:07:20
    HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();... po.setIp(IpUtil.clientIp(req)); IpUtil.java   Java代码    public class ...
  • Python获取客户端IP地址

    千次阅读 2019-05-28 15:25:39
    获取客户端IP地址 if 'HTTP_X_FORWARDED_FOR' in request.META: ipaddress = request.META['HTTP_X_FORWARDED_FOR'] else: ipaddress = request.META['REMOTE_ADDR']
  • java获取用户ip地址

    千次阅读 2018-10-23 17:04:38
    package com.tonglifang.common.utils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest;... * IP地址 ...
  • 通过js获取本地IP地址

    万次阅读 2018-09-10 11:23:20
    通过js获取本地IP地址 最近在做pc项目,需要根据用户的IP地址定位城市。IP地址需要通过js获取: 网上有很多查询接口可以获取到IP,我这里用的是搜狐的: http://pv.sohu.com/cityjson?ie=utf-8 在浏览器中,...
  • java获取客户端IP地址和MAC地址

    万次阅读 2014-06-12 15:45:18
    最近项目中要获得客户端的mac地址。...根据客户端的http请求,利用request.getRemoteAddr()获取客户端Ip地址。在局域网内getRemoteAddr()和getRemoteHost()获得的结果相同。request.getRemoteAddr()是获得
  • uniapp如何获取IP地址

    千次阅读 2021-04-30 10:40:36
    uniapp如何获取IP地址获取ip地址js获取ip地址uni-app获取ip地址 获取ip地址 最近一个uni项目涉及到获取IP地址,在网上看到用引入外部JS的方法来获取,uni-app配置模板没有找到index.html这个文件,所以这个没法在...
  • 不传参数,直接通过ServletRequestAttributes获取当前项目所在服务器的端口号和ip地址 public static String getUrl(){ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) ...
  • nginx获取真实ip地址

    千次阅读 2018-11-28 15:17:20
    众所周知,在编译Nginx时,可通过添加http_realip_module模块来获取真实客户端IP地址。何为真实IP地址呢?请看下图,既获取到的真实客户端IP是101,既不是正向代理服的104,也不是反向代理的105。   我们以PHP...
  • 通过sed命令获取IP地址

    千次阅读 2015-10-25 12:28:41
    通过sed命令获取IP地址,linux获取IP地址
  • vue中获取本地IP地址

    万次阅读 2019-07-08 15:24:56
    vue中获取本地IP地址 IP地址需要通过js获取: 网上有很多查询接口可以获取到IP,查到的搜狐的比较多,我这里就用搜狐的: http://pv.sohu.com/cityjson?ie=utf-8 1、在浏览器中,直接输入这个地址,就可以获取到ip...
  • Qt获取本地ip地址

    千次阅读 2017-12-27 09:00:00
    Qt提供相关获取ip地址的类,可以十分方便获取本机ip地址。QString MainWindow::read_ip_address() { QString ip_address; QList&lt;QHostAddress&gt; ipAddressesList = QNetworkInterface::allAddresses...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 643,150
精华内容 257,260
关键字:

如何获取网站的ip地址