点击上方蓝字关注我们

上期跟大家分享了:利用阿里云域名解析提供的免费API+python脚本来实现动态公网ip的动态域名解析功能。

上期回顾↓

内网穿透之动态域名解析_DDNS

今天跟大家分享关于这个python脚本如何添加多个子域名,以及动态ip的80端口和443端口被封禁后如何实现在解析域名后不需要添加端口号就可以访问网站的效果!小白实用,大神略过!玩客云刷的armbian系统的python脚本环境配置整个过程可参考下文↓玩客云python3.5环境配置实现阿里动态域名解析一、python脚本添加多个子域名动态域名解析的方法:

①.最简单粗暴没有技术含量的方法:把改脚本在不同的目录下复制一份,然后不同目录下的子域名设置你需要的不同的子域名(其他不变),然后在宝塔面板的计划任务中在设置一份定时启动任务即可!这种方法虽然理论上是可以实现多子域名的效果,但是重复运行多个脚本无疑增加了机器运行的负担,因此不太推荐此种方法。

友情提示

linux系统下python脚本的定时启动也可以使用系统自带的软件定时启动的方法,详情请访问我的个人博客分享的一篇博文↓↓↓

http://blog.jgd666.cn/post/7.html

②.修改python脚本:这种事情对有编程基础的朋友来说不算个事!但是对像我这种小白来说就是天方夜谭放完看不懂啊。为此我还特意看了几天关于python入门的书籍(好在这个aliddns.py的脚本比较简单)现在多少能知道代码的大概逻辑^_^!脚本中的子域名应该是可以用列表的方法+逻辑循环的功能来实现多子域名的添加及修改的,奈何我不会^_^我就喜欢用简单自己的方法来实现功能!!!

python脚本修改后见下文,如有需要可以直接复制!

from aliyunsdkcore.client import AcsClient

from aliyunsdkcore.acs_exception.exceptions import ClientException

from aliyunsdkcore.acs_exception.exceptions import ServerException

from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest

from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest

import requests

from urllib.request import urlopen

import json

ipv4_flag = 1  # 是否开启ipv4 ddns解析,1为开启,0为关闭

accessKeyId = ""  # 将accessKeyId改成自己的accessKeyId

accessSecret = ""  # 将accessSecret改成自己的accessSecret

domain = ""  # 你的主域名

name_ipv4 = ""  # 要进行ipv4 ddns解析的子域名

name1_ipv4 = "" # 要进行ipv4 ddns解析的子域名新添加的其二个

client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')

def update(RecordId, RR, Type, Value):  # 修改域名解析记录

from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest

request = UpdateDomainRecordRequest()

request.set_accept_format('json')

request.set_RecordId(RecordId)

request.set_RR(RR)

request.set_Type(Type)

request.set_Value(Value)

response = client.do_action_with_exception(request)

def add(DomainName, RR, Type, Value):  # 添加新的域名解析记录

from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest

request = AddDomainRecordRequest()

request.set_accept_format('json')

request.set_DomainName(DomainName)

request.set_RR(RR)

request.set_Type(Type)

request.set_Value(Value)

response = client.do_action_with_exception(request)

if ipv4_flag == 1:

request = DescribeSubDomainRecordsRequest()

request.set_accept_format('json')

request.set_DomainName(domain)

request.set_SubDomain(name_ipv4 + '.' + domain)     #设置name_ipv4的域名

response = client.do_action_with_exception(request)  # 获取域名解析记录列表

domain_list = json.loads(response)  # 将返回的JSON数据转化为Python能识别的

ip = urlopen('https://api-ipv4.ip.sb/ip').read()  # 使用IP.SB的接口获取ipv4地址

ipv4 = str(ip, encoding='utf-8')

print("获取到IPv4地址:%s" % ipv4)

if domain_list['TotalCount'] == 0:

add(domain, name_ipv4, "A", ipv4)

print("新建域名name_ipv4解析成功")

elif domain_list['TotalCount'] >= 1:

print(domain_list['TotalCount'])

if domain_list['DomainRecords']['Record'][0]['Value'].strip() != ipv4.strip():

update(domain_list['DomainRecords']['Record'][0]['RecordId'], name_ipv4, "A", ipv4)

print("修改域名name_ipv4解析成功")

else:

print("IPv4地址没变")

#重复判断name1_ipv4

request = DescribeSubDomainRecordsRequest()

request.set_accept_format('json')

request.set_DomainName(domain)

request.set_SubDomain(name1_ipv4 + '.' + domain)     #设置name_ipv4的域名

response = client.do_action_with_exception(request)  # 获取域名解析记录列表

domain_list = json.loads(response)  # 将返回的JSON数据转化为Python能识别的

if domain_list['TotalCount'] == 0:

add(domain, name1_ipv4, "A", ipv4)

print("新建域名name1_ipv4解析成功")

elif domain_list['TotalCount'] >= 1:

print(domain_list['TotalCount'])

if domain_list['DomainRecords']['Record'][0]['Value'].strip() != ipv4.strip():

update(domain_list['DomainRecords']['Record'][0]['RecordId'], name1_ipv4, "A", ipv4)

print("修改域名name1_ipv4解析成功")

else:

print("IPv4地址没变")

这里需要注意的是:name1_ipv4 = ""为新添加的子域名。#重复判断name1_ipv4下面的所有代码为新添加的子域名的域名解析添加和ip变动修改代码。如果想添加更多请在后面在添加name2_ipv4 = ""然后在复制 #重复判断name1_ipv4以下的所有代码在粘贴并修改所有的name1为name2,以此类推!(文字叙述有点复杂,具体过程可查看blibli.com的“大毛爱分享”的视频版介绍)

 二、当动态公网ip的80端口和443端口都被封禁不能使用的情况下,如何做到访问域名绑定的网站不加端口号呢?

当主编第一次动态域名解析成功后,还没有来的急欣喜就发现了让人不爽的问题:“80端口/443端口都被封了!访问不了!!!”结果百度后才知道我的情况绝非个例,而是普遍存在的现象!!!

怎么办呢?遇到问题就解决问题啊!后来我发现,解决这个问题只要我们把域名解析的记录类型设置为"显性URL”,这样就可以将域名重定向到另外一个地址,从而问题得到解决!

下面我们来举个例子:假设你家的宽带有动态公网ip,并且你在局域网搭建一个网站然后使用aliddns.py脚本进行了动态域名解析。这个时候如果你网站绑定的是80端口你是没有办法使用域名/公网ip访问网站的,你只能修改端口号为非80或者443端口,并且在访问的时候域名结尾要加上端口号才可以访问。这个时候我们只需要在域名解析处添加记录类型设置为"显性URL”记录值为域名+端口号(也就是你可以正常访问的域名)即可直接使用域名访问(无需要加端口号)

看到这里可能有的大佬会说:“我呸还以为是啥好办法呢!”各位大神小编能力有限目前这能想到这种相对简单实用的方法,如果你有更好的方法欢迎分享,谢谢!

^_^关注大毛不迷路^_^


温馨提示:有问题可以公众号/博客评论区给我留言,看到后在我能力范围之内的会第一时间回复你!

thinkphp开启子域名无法正常访问_内网穿透之动态域名解析_DDNS(二)相关推荐

  1. thinkphp开启子域名无法正常访问_解决TP6报错“当前访问路由未定义或不匹配”...

    如果是报路由错误,则说明启用了路由控制,那么所有被访问的页面都需要配置路由,否则将无法访问. 例如: 在浏览器中运行http://hml.tp6.com/admin/getlog 报错:当前访问路由未 ...

  2. 两台外网计算机远程桌面访问(内网穿透)

    背景 如图所示,项目中需要远程访问项目现场的外网计算机,通过外网计算机再访问到现场内网环境中的另外一台计算机.原计划通过市面上的远程桌面软件,如向日葵.ToDesk.AnyDesk等,建立两台外网计算 ...

  3. 启动go服务_内网穿透工具 FRP公网服务端、内网客户端快速配置文件说明

    内网穿透工具 FRP 公网服务端.内网客户端 frps.ini .frpc.ini 配置文件常用设置展示及说明 公网服务端 frps.ini 配置文件常用设置 公网服务端配置文件:frps.ini [ ...

  4. 使用cpolar配置内网访问(内网穿透)教程(超详细,简单)

    目录 一.什么是cpolar? 二.它能用在哪些场景? 三.一些很棒的功能 四.cpolar高级套餐 五.如何使用? 1.下载cpolar软件安装包 2.注册cpolar账号 3. 登录账号,并拿到隧 ...

  5. 内网安装管家婆软件如何实现外网访问?内网穿透的几种方案教程

    管家婆软件从网络架构上分两种版本:web(浏览器http端口)访问的版本和客户端(211固定端口+sqlserver数据库)访问的版本.公司库管经常用仓库登录管家婆,一旦需要在公司外部登陆访问管家婆客 ...

  6. 如何配置ubuntu可被公网访问【内网穿透】

    在局域网内ssh远程登录到ubuntu,只需要知道被控端的IP地址就可以.但对于想要在家里/宿舍/公司,也能够远程ssh访问ubuntu时,应该怎么设置呢? 在ipv4公网IP资源枯竭的情况下,运营商 ...

  7. frp 后台地址_内网穿透工具frp搭建与使用详细教程

    简介:FRP(Fast Reverse Proxy) 是一款简单,好用,稳定的隧道工具.FRP 使用 Go 语言开发,它是一款高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务.FRP 支持 ...

  8. 【IoT开发工具箱 | 03】搭建可外网访问的内网穿透http文件服务器

    这是机器未来的第56篇文章 原文地址:https://robotsfutures.blog.csdn.net/article/details/127046100 <Python数据科学快速入门系 ...

  9. 在自己电脑上编写的项目如何让别人也能访问(内网穿透)?

    小伙伴们通常都是在自己的电脑上编写自己的项目.在我们将项目开发完成后,如果要让别人也能访问,就是在浏览器输入一个域名网址后就能访问我们的项目.正常步骤为:要先购买一台云服务器,然后购买一个域名,接着将 ...

  10. python内网穿透 开源_内网穿透神器-Serveo

    Serveo.net 如果访问不了,可以看文章后面的官网截图. Serveo 的功能:将局域网内的服务端口开放到因特网上,实现通过外网访问内网的需求:在 Setveo 官网 https://serve ...

最新文章

  1. 「Vue」vue生命周期
  2. mysql 存储过程 百万数据 innodb_详解mysql数据库一键查看锁信息(开启InnoDB监控)...
  3. 在matlab中提取线性方程组的系数矩阵
  4. NodeJS使用ES6
  5. c 连接mysql错误信息_使用C语言访问MySQL数据 —— 连接和错误处理
  6. 信息学奥赛一本通 2039:【例5.6】冒泡排序
  7. 使用redis做缓存,遇到Could not return the resource to the pool异常怎么办呐!
  8. JZOJ 3425. 能量获取
  9. 编写你的第一个Django应用程序
  10. ProcExp和TaskMgr的列对比
  11. 圣经与超级计算机,圣经创世纪里的时间概念和爱因斯坦相对论
  12. java实现手机邮箱格式验证
  13. 看完比尔盖茨30年的56条思考,我才理解他为什么能17年斩获世界首富!
  14. Office安装时遇到的问题
  15. Lambertian 反射(也叫理想散射)
  16. 京东小白如何快速掌握运营技巧
  17. 短视频剪辑教程自学难吗?子苗教育
  18. 算法问题:什么是P问题、NP问题和NPC问题zz
  19. SpringCloud面试题目
  20. 电影里的黑客为何都不用鼠标

热门文章

  1. SVN 代码与文件管理小记
  2. Atitti css transition Animation differ区别
  3. Atitit .h5文件上传
  4. Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1
  5. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
  6. AIS家电行业供应链管理系统综合分析-零部件订货对应分析需求
  7. Python: 日志库logging总结
  8. 股市法则:长线大钱最终胜出(荀玉根、姚佩)
  9. (转)优秀的创始人不是知道一切,而是学习一切
  10. 从数据黑盒到数据白盒,阿里云基础产品首席架构师黄瑞瑞分享背后的故事