获取发送请求服务器的ip
Ⅰ java的servlet 不通过request能获取到服务器IP与提供的端口号吗。
这个可不是的,request相当于客户端,浏览器端的请求,是通过request的构造方法进行表单的提交,然后再分装到实体对象中,再调用业务层济宁处理数据,然后后面再进行操作了
Ⅱ php如何获取请求接口资源的请求者的IP地址
php获取接口资源的IP地址:
<?php
function getIPLoc_sina($queryIP){
$url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_ENCODING ,'utf8');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
$location = curl_exec($ch);
$location = json_decode($location);
curl_close($ch);
$loc = "";
if($location===FALSE) return "";
if (empty($location->desc)) {
$loc = $location->province.$location->city.$location->district.$location->isp;
}else{ $loc = $location->desc;
}
return $loc;
}
echo getIPLoc_sina("183.37.209.57");
?>
Ⅲ http代理IP如何获取
大多情况下,爬虫用户自己是没有能力去自己维护服务器或者是自己解决代理ip的问题的,一来是因为技术含量太高,二来是因为成本太高当然,也有很多人会在网上开放型代理,但是从实用性、稳定性以及安全性来考虑,不建议大家使用。
在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力,所以你一直用同一个代理IP爬取这个网页,很有可能IP会被禁止访问网页,所以基本上做爬虫的都躲不过去IP的问题,需要很多的IP来实现自己IP地址的不停切换,达到正常抓取信息的目的。
代理IP的获取,可以从以下几个途径得到:
一、第三方平台
有一些平台可以不需成本获取一些IP,直接搜索引擎在官网上找,然后验证代理IP是否有效,延迟时间等等,可以导出来使用,也可以直接右键设置IE代理。不足的是,效率低,不稳定,速度慢,爬出来做一些简单的业务勉强可以完成,一些需要高质量IP的业务只能另寻他法。
二、ADSL拨号
ADSL拨号也就是我们常说的拨号VPS,拨一次号可以换一次IP,相对来说比较稳定,自己控制拨号时间,比开放型代理稳定。但对于爬虫工作来说,还是繁琐效率比较低。
三、自建代理IP
采购一批拨号VPS服务器,利用squid+stunnel搭建一台HTTP高匿代理服务器,proxy也可以搭建。自建代理比较稳定,只有自己使用,效果也比较好。不过这个需要一定技术要求,不适合新手小白。
四、代理IP
建议在选择的时候要根据自身的要求选择,比如有效时间,提取数量,HTTP还是socks5等等,需要从你个人的需求出发,一一概况全部使用情况,自己需要去做出判断。IPIDEA包含http/https/socks,具备全球220+国家地区的高匿名资源支持自定义提取。
Ⅳ java怎么获取请求的ip
java获取外网ip地址方法:
public class Main {
public static void main(String[] args) throws SocketException {
System.out.println(Main.getRealIp());
}
public static String getRealIp() throws SocketException {
String localip = null;// 本地IP,如果没有配置外网IP则返回它
String netip = null;// 外网IP
Enumeration<NetworkInterface> netInterfaces =
NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
boolean finded = false;// 是否找到外网IP
while (netInterfaces.hasMoreElements() && !finded) {
NetworkInterface ni = netInterfaces.nextElement();
Enumeration<InetAddress> address = ni.getInetAddresses();
while (address.hasMoreElements()) {
ip = address.nextElement();
if (!ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 外网IP
netip = ip.getHostAddress();
finded = true;
break;
} else if (ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 内网IP
localip = ip.getHostAddress();
}
}
}
if (netip != null && !"".equals(netip)) {
return netip;
} else {
return localip;
}
}
}
Ⅳ 服务器IP、内网IP和外网IP有什么联系分别是怎样获得的
公网ip具有世界范围的唯一性,而内网ip只在局域网内部具有唯一性。并且,一个局域网里所有电脑的内网IP是互不相同的,但共用一个外网IP。
就像我们前面所说的你所在学校的校名在整个世界上只有一个,但是你学校里面的A栋大楼3层3号教室只有在你的校园内部才具有唯一性。别的学校也有A栋大楼3层3号教室。你只能跟快递小哥说请帮我把包裹送到xx大学,而不能说请帮我把包裹送到A栋大楼3层3号教室。
在局域网中,每台电脑都可以自己分配自己的IP,但是这个IP只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商的服务器会为你分配一个IP地址,这个IP地址才是你在外网的IP。两个IP同时存在,一个对内,一个对外。
(5)获取发送请求服务器的ip扩展阅读
内网和外网之间的通信(端口映射原理)
端口映射是 NAT 的一种,它将外网主机的 IP 地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该 IP 的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。
A 电脑的 IP 是局域网 IP(192.168.31.11),这个 IP(192.168.31.11)是从路由器的 lan口分配的。当我们上网络的时候,经过路由器的 wan口,进行相应的IP、端口转化:192.168.31.11:80 -> 10.221.0.24:8080,所以,从 wan口出去的地址为:10.221.0.24:8080。
最后,经过运营商,运营商那边会做相应的端口映射(而且是动态端口映射),子网 IP(10.221.0.24:8080)转化为公网 IP(128.0.0.1:8888),通过这个公网 IP 去访问网络服务器。
同理,B 的过程也是一样。通过这样的层层端口映射,最终保证地址(IP + 端口)的唯一性。A 和 B 访问网络服务器,尽管它们的局域网 IP 是一样的,但是最终它们访问网络的地址(IP + 端口)是唯一的,所以,网络服务器回复时,原路返回时能够区分到底给谁回。
Ⅵ 局域网内怎样获得自动分配的IP地址
在局域网中,采用DHCP自动获取的方式,网内的电脑只能随机的获取到某一IP地址,如何才能获取到某已指定的IP地址。
工具/原料
电脑
方法/步骤
比如在局域网中我想获得的IP地址为:192.168.1.88。
步骤一:首先要在你的电脑中将其设置为固定IP地址。电脑桌面——网上邻居(鼠标右键属性)——双击本地连接
然后选择常规——属性——双击Internet协议(TCP/IP)
然后选择“使用下面的IP地址”和选择“使用下面的DNS服务器地址”,在IP地址上如图输上192.168.1.88,子网掩码255.255.255.0 网关192.168.1.1后,DNS到网络上搜索DNS服务器后随便选两个就行,或者不填,然后点击确定。
已将其设置为固定后,再将其改为自动获取,电脑就会自动获取到你刚输入过的固定IP地址。
步骤二:电脑桌面——网上邻居(鼠标右键属性)——双击本地连接——常规——属性——双击Internet协议(TCP/IP)——然后选择“自动获取IP地址”和选择“自动获取DNS服务器地址”,就会获取到你前面所输入的IP地址。(如果一次不行可多试两次,或重启路由器的DHCP服务)