教你把家裡電腦弄成外網伺服器
# encoding: utf-8 from aliyunsdkcore import client from aliyunsdkalidns.request.v20150109 import DescribeDomainsRequest,DescribeDomainRecordsRequest,UpdateDomainRecordRequest import json,urllib,re #替換以下引數 下面是操作(阿里雲域名解析IP的修改) ID="LTAIk9fUCW407" #這邊是key 替換成自己的 Secret="O7z3f1u8YApTLubXKVEMmiu" #替換成自己的 RegionId="cn-hangzhou" #解析記錄的ID,此引數在新增解析時會返回,在獲取域名解析列表時會返回 DomainName="hack.com" #一級域名 替換成自己的 #想要自動修改的主機名和域名型別 HostNameList = ['python'] #這邊可以新增二級域名或者"*"所有的都滿足 替換成想設定的二級域名 Types = "A" #解析記錄型別 TTL="1" #生存時間,預設為600秒 ,也就是解析時間,我這邊是1秒(買了解析的會員服務) clt = client.AcsClient(ID,Secret,RegionId) #獲取公網ip def GetLocalIP(): #下面獲取公網IP地址,用了2種方式,防止一個失效報錯 try: IPInfo = urllib.urlopen("http://api.ipify.org/?format=json").read() except IOError: try: IPInfo =urllib.urlopen("https://www.taobao.com/help/getip.php").read() except IOError: IPInfo = "So sorry!!!" theIP =re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}",IPInfo) nowIP=theIP.pop(0) print nowIP return nowIP #獲取域名列表(暫時無用) def GetDomainList(): DomainList = DescribeDomainsRequest.DescribeDomainsRequest() DomainList.set_accept_format('json') DNSListJson = json.loads(clt.do_action_with_exception(DomainList)) print DNSListJson #更新域名ip def EditDomainRecord(HostName, RecordId, Types, IP): UpdateDomainRecord = UpdateDomainRecordRequest.UpdateDomainRecordRequest() UpdateDomainRecord.set_accept_format('json') UpdateDomainRecord.set_RecordId(RecordId) UpdateDomainRecord.set_RR(HostName) UpdateDomainRecord.set_Type(Types) UpdateDomainRecord.set_TTL(TTL) UpdateDomainRecord.set_Value(IP) UpdateDomainRecordJson = json.loads(clt.do_action_with_exception(UpdateDomainRecord)) print UpdateDomainRecordJson #獲取域名資訊 def GetAllDomainRecords(DomainName, Types, IP): DomainRecords = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest() DomainRecords.set_accept_format('json') DomainRecords.set_DomainName(DomainName) DomainRecordsJson = json.loads(clt.do_action_with_exception(DomainRecords)) for HostName in HostNameList: for x in DomainRecordsJson['DomainRecords']['Record']: RR = x['RR'] Type = x['Type'] if RR == HostName and Type == Types: RecordId = x['RecordId'] print RecordId # 這裡是 修改域名解析的IP,前提是你得在域名廠商先新增一個域名解析 # 如果當前伺服器IP和域名解析中IP中一樣會報錯,沒關係,因為兩個IP 一樣,不需要修改阿里雲域名解析的IP EditDomainRecord(HostName, RecordId, Types, IP) IP = GetLocalIP() GetDomainList() #這個方法是顯示看得 GetAllDomainRecords(DomainName, Types, IP)--------------------------------------------------------------------------------------------------------------------------------------------
# DomainNmeResolutionIP# 阿里雲域名解析(動態)修改IP(遠端家裡電腦小KS)
1.程式碼中的ID(Access Key ID)、Secret(Access Key Secret)是您訪問阿里雲API的金鑰,需要自己在阿里雲 使用者資訊管理--->安全資訊管理 中建立
2.程式碼中獲取公網ip 用了2中方式,防止有一個失效,大家也可以從網上找其他的api介面獲取公網IP
## 教你把家裡的電腦弄成伺服器1. 確認你家的寬頻用的是公網IP,判斷方式看看 路由器中的公網IP 和在百度搜索的IP 地址 是否一樣,不一樣的話,給客服小姐姐打電話改成公網IP(當然肯定是動態的),一定要是公網IP ,否則一切免談(GG Over)
2. 買個域名(我是在阿里雲買的),域名幹啥用??當然是解析你家公網IP啊,上面Python指令碼主要是抓取你家電腦當前公網IP
3. 域名有了,公網IP有了,那我們先去阿里雲域名管理區解析下,第一次肯定是手動新增一個域名了+解析IP(這個怎麼解析,大家應該都會哈。。。)
4. 現在還不能從公司訪問你家裡的電腦哈,要把家裡的路由器(我用的小米路由)埠轉發下,比如你要訪問家裡電腦3389埠,那你得在路由器中轉發下,自己設定設定轉發介面,有人問了為啥要轉發啊,因為電信爺爺不讓你用80埠,所以我們都是域名(IP)+埠 的形式訪問家裡電腦,或者你在IIS上釋出的網站
5. 電信爺爺給的公網IP會不定時的變,我們上面的Python指令碼現在要發揮作用了,我把這個python指令碼部署在家裡膝上型電腦虛擬機器中的 Centos7),用了cron 定時1秒跑一下這個指令碼,秒解析(前提是你的域名買了秒解析的服務,大家都知道預設的域名解析是需要10分鐘才生效的),阿里雲的域名 有這個服務,大家升級下你的域名解析服務,也就幾十塊錢,不貴
6.現在的雲伺服器有點貴啊,如果你是土豪當我沒說,我家裡現在的寬頻是100M,12G的筆記本記憶體,固態硬碟啟動。。。。真TM爽,當然我們的成本就是電費+寬頻,你到阿里雲或者騰訊雲買個伺服器 100M的寬頻你看看呢,得不少錢啊,2M、4M 1年 最低的也要 好幾百吧 ,老子窮,不想花那錢,就想小成本弄個速度快記憶體快的家用伺服器,兄弟們把你家裡的電腦用起來吧。。。。。。
7. 如果你有什麼問題不會的 歡迎發郵件給我:[email protected],或者加我QQ。。。。。