帮别人做诈骗网站技术,外链论坛,做网站开发的有哪些公司,淘宝商城文章目录 域名配置域名更新frp配置修改 在成功完成frp改造Windows笔记本实现家庭版免费内网穿透之后#xff0c;某天我突然发现内网穿透失效了#xff0c;一番排查之后原来是路由器对应的公网IP更换了。果然我分到的并不是固定的公网IP#xff0c;而是会定期变化的。为了免受… 文章目录 域名配置域名更新frp配置修改 在成功完成frp改造Windows笔记本实现家庭版免费内网穿透之后某天我突然发现内网穿透失效了一番排查之后原来是路由器对应的公网IP更换了。果然我分到的并不是固定的公网IP而是会定期变化的。为了免受定期在配置文件中更换IP之苦我决定将变化的IP与固定的域名绑定过上懒人该过的快乐躺平生活。 DDNSDynamic DNS动态DNS是一种网络服务它允许您将静态域名如example.com绑定到动态IP地址。动态IP地址通常是指从互联网服务提供商ISP获得的IP地址这些地址可能会在用户每次连接到互联网时发生变化。 DDNS服务的核心功能是跟踪用户IP地址的变化并在IP地址发生变化时自动更新域名解析记录确保域名始终指向当前的IP地址。这样即使用户的IP地址发生变化其他网络用户仍然可以通过静态域名访问到用户的服务或设备。 域名配置
进入阿里云一元域名购买页搜索合适的域名并斥巨资一元购买接下来一年你就拥有了一个可用的IP。 然后准备好身份证按照指引完成实名认证。 进入解析设置页将域名与当前的IP绑定虽然生效时间写着十分钟不过实测是立即生效的。
域名更新
首先在Windows下的Python3环境中装这几个包
pip3 install aliyun-python-sdk-core-v3 --user
pip3 install aliyun-python-sdk-domain --user
pip3 install aliyun-python-sdk-alidns --user根据创建AccessKey教程按如下步骤创建RAM用户的AccessKey 添加权限
复制AccessKey ID和AccessKey Secret或直接导出CSV文件 查看API使用文档 编写如下代码更新dns
import warnings
warnings.filterwarnings(ignore)
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyunsdkcore.auth.credentials import AccessKeyCredential
import json
from urllib.request import urlopen
import timeclass DnsUpdater:def __init__(self):accessKeyId ***accessSecret ***credentials AccessKeyCredential(access_key_idaccessKeyId, access_key_secretaccessSecret)self.client AcsClient(region_idcn-hangzhou, credentialcredentials)self.domain ***self.myip self.get_ip()def get_ip(self):ip urlopen(https://api-ipv4.ip.sb/ip).read() ipv4 str(ip, encodingutf-8).strip()print(\n本机当前IP为, ipv4)return ipv4def DescribeDomainRecords(self):request CommonRequest()request.set_accept_format(json)request.set_domain(alidns.cn-hangzhou.aliyuncs.com)request.set_method(POST)request.set_protocol_type(https)request.set_version(2015-01-09)request.set_action_name(DescribeDomainRecords)request.add_query_param(DomainName, self.domain)response self.client.do_action(request)data json.loads(response.decode(utf-8))order 1for item in data[DomainRecords][Record]:print(域名str(order), item[DomainName])print(IPstr(order), item[Value])order 1if item[DomainName] self.domain:self.RecordId item[RecordId]self.RR item[RR]self.Type item[Type]self.RecordIp item[Value]def UpdateDomainRecord(self):request CommonRequest()request.set_accept_format(json)request.set_domain(alidns.cn-hangzhou.aliyuncs.com)request.set_method(POST)request.set_protocol_type(https)request.set_version(2015-01-09)request.set_action_name(UpdateDomainRecord)request.add_query_param(RecordId, self.RecordId)request.add_query_param(RR, self.RR)request.add_query_param(Type, self.Type)request.add_query_param(Value, self.myip)response self.client.do_action(request)print(str(response, encoding utf-8))def QueryDSRecord(self):request CommonRequest()request.set_accept_format(json)request.set_domain(domain.aliyuncs.com)request.set_method(POST)request.set_protocol_type(https)request.set_version(2018-01-29)request.set_action_name(QueryDSRecord)request.add_query_param(DomainName, self.domain)response self.client.do_action(request)print(str(response, encoding utf-8))if __name__ __main__: # 定义一个函数来执行更新操作并等待10秒后重试def update_domain_record():try:dnsupdater DnsUpdater()dnsupdater.DescribeDomainRecords()if dnsupdater.myip ! dnsupdater.RecordIp:print(主机IP与公网IP不一致进入更新模式)print(dnsupdater.myip)print(dnsupdater.RecordIp)dnsupdater.UpdateDomainRecord()print(更新成功)return True # 返回True表示更新成功不需要再次尝试except Exception as e:print(f网络连接异常重试中...)time.sleep(10) # 等待10秒后重试return False # 返回False表示更新失败需要再次尝试# 循环尝试更新最多尝试6次for attempt in range(6):if update_domain_record():break # 如果更新成功则跳出循环else:print(尝试更新六次后仍然失败请检查网络或服务状态。)
frp配置修改
将服务器端的start.bat修改如下
echo off
:home
python3 updateDNS.py
frps -c frps.toml
goto home最后将客户端的toml中文件的IP地址设置为域名