读书人

麻烦大家帮忙修改下 关于python获取IP

发布时间: 2013-04-26 16:27:53 作者: rapoo

麻烦大家帮忙修改下 关于python获取IP的代码……多谢


import httplib, urllib
import socket
import time

params = dict(
login_email="XXXX", # 替换为DNSPOD账号
login_password="XXXXX", # 替换为DNSPOD密码
format="json",
domain_id=XXXX, # 填写Domain ID
record_id=XXXXXXXXXX, # 填写Record ID
sub_domain="nas", # 填写二级域名
record_line="默认",
)
current_ip = None

def ddns(ip):
params.update(dict(value=ip))
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/json"}
conn = httplib.HTTPSConnection("dnsapi.cn")
conn.request("POST", "/Record.Ddns", urllib.urlencode(params), headers)

response = conn.getresponse()
print response.status, response.reason
data = response.read()
print data
conn.close()
return response.status == 200

def getip():
sock = socket.create_connection(('ns1.dnspod.net', 6666))
ip = sock.recv(16)
sock.close()
return ip

if __name__ == '__main__':
while True:
try:
ip = getip()
print ip
if current_ip != ip:
if ddns(ip):
current_ip = ip
except Exception, e:
print e
pass
time.sleep(30)


我知道大概是什么意思 就是获取当前IP 然后通过api写入一个地址

关键问题是 现在获取IP这个部分

有点问题 麻烦大家帮忙看看 修改下 多谢
1.现在获取的IP 是我本机的真实IP地址
我通过http://www.yougetsignal.com/tools/open-ports/ 也可以查询到

但是 因为我使用小区宽带 上面这个IP 地址是真实的地址 ,但是实际上 小区通过路由什么的 应该是重新分配了个IP给我

重新分配的IP 通过 http://www.ip138.com 可以查询到

我的问题是,如何将上面代码中获取真实IP的方法 换成ip138这种获取的IP呢?

多谢大家
[解决办法]
我还没接触,目前提不出具体代码
但你搜搜 HTTP_X_FORWARDED_FOR 相关文章,抓proxy后的ip肯定离不开这个参数

[解决办法]
你在小区内的是局域网或广域网
通过运营商的NAT接入到公网里
所以你应该了解下什么是NAT
你可以调用在公网上的如ip138的接口去获取你本地通过NAT映射出的真正IP
[解决办法]
不好意思我这里看到的都是公网ip,估计ip138与你同属一个内网里...

Python 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 20:30:21) [MSC v.1600 64 bit (AMD64)] on win32


Type "copyright", "credits" or "license()" for more information.
>>> import http.client
>>> conn = http.client.HTTPConnection("iframe.ip138.com")
>>> conn.request("GET", "/ic.asp")
>>> res = conn.getresponse()
>>> res.read()
b'<html>\r\n<head>\r\n<meta http-equiv="content-type" content="text/html; charset=gb2312">\r\n<title> \xc4\xfa\xb5\xc4IP\xb5\xd8\xd6\xb7 </title>\r\n</head>\r\n<body style="margin:0px"><center>\xc4\xfa\xb5\xc4IP\xca\xc7\xa3\xba[113.73.231.9] \xc0\xb4\xd7\xd4\xa3\xba\xb9\xe3\xb6\xab\xca\xa1\xd6\xd0\xc9\xbd\xca\xd0 \xb5\xe7\xd0\xc5</center></body></html>'
>>> import socket
>>> s = socket.socket(socket.AF_INET,socket. SOCK_STREAM)
>>> s.connect(("ns1.dnspod.net", 6666))
>>> s.recv(1024)
b'113.73.231.9'
>>>

读书人网 >perl python

热点推荐