pythondns
1. 請教一個關於 python Requests 設置 DNS 的問題
說實話只要和 Web 相關的強烈建議先去看看 HTTP 協議的相關書籍或者 RFC。
域名在 Client 的作用是通過 DNS 解析到 Server 的 IP,但是請求需要在 Host 頭中帶上域名,實際請求還是發送到 IP 的。
舉個例子:
GET /foo.php HTTP/1.1
Host: example.com
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
基於這個過程有兩種方法來解決:
第一:基於系統環境解決。
修改本地 Host、指定 DNS
第二:自己構造請求。
這種方法需要可以自定義請求的 Host 頭,並且需要自己處理解析這塊。可以選擇硬編碼 IP 或者還是採用第一種方法實現。
可以先使用硬編碼 IP 的方式來嘗試一下,剩下的就是要確認使用的請求庫能否支持自定義 Host 頭了。
如果想進一步解決硬編碼 IP 的問題,那麼就需要一個 DNS 的庫來獲得正確的解析記錄,再來發起請求。
剩下的問題就可能出在 HTTPS 上,因為證書校驗是需要靠域名校驗的,client 處理的方式細節不同通過 IP 發起請求可能會出現證書校驗錯誤,粗暴的方法就是無視證書錯誤。
2. 如何自學 Python
分享Python學習路線。
第一階段Python基礎與Linux資料庫。這是Python的入門階段,也是幫助零基礎學員打好基礎的重要階段。你需要掌握Python基本語法規則及變數、邏輯控制、內置數據結構、文件操作、高級函數、模塊、常用標准庫模塊、函數、異常處理、MySQL使用、協程等知識點。
學習目標:掌握Python基礎語法,具備基礎的編程能力;掌握Linux基本操作命令,掌握MySQL進階內容,完成銀行自動提款機系統實戰、英漢詞典、歌詞解析器等項目。
第二階段WEB全棧。這一部分主要學習Web前端相關技術,你需要掌握HTML、CSS、JavaScript、jQuery、BootStrap、Web開發基礎、VUE、Flask Views、Flask模板、 資料庫操作、Flask配置等知識。
學習目標:掌握WEB前端技術內容,掌握WEB後端框架,熟練使用Flask、Tornado、Django,可以完成數據監控後台的項目。
第三階段數據分析+人工智慧。這部分主要是學習爬蟲相關的知識點,你需要掌握數據抓取、數據提取、數據存儲、爬蟲並發、動態網頁抓取、scrapy框架、分布式爬蟲、爬蟲攻防、數據結構、演算法等知識。
學習目標:可以掌握爬蟲、數據採集,數據機構與演算法進階和人工智慧技術。可以完成爬蟲攻防、圖片馬賽克、電影推薦系統、地震預測、人工智慧項目等階段項目。
第四階段高級進階。這是Python高級知識點,你需要學習項目開發流程、部署、高並發、性能調優、Go語言基礎、區塊鏈入門等內容。
學習目標:可以掌握自動化運維與區塊鏈開發技術,可以完成自動化運維項目、區塊鏈等項目。
按照上面的Python學習路線圖學習完後,你基本上就可以成為一名合格的Python開發工程師。當然,想要快速成為企業競聘的精英人才,你需要有好的老師指導,還要有較多的項目積累實戰經驗。
自學本身難度較高,一步一步學下來肯定全面且扎實,如果自己有針對性的想學哪一部分,可以直接跳過暫時不需要的針對性的學習自己需要的模塊,可以多看一些不同的視頻學習。
3. 如何使用python 語言來實現測試開發
對於各種驅動介面,Python來編寫測試用例的好處是:由於Python不需要編譯,你所執行的也就是你所編寫的,當發生異常的時候,你無須打開集成開發環境,載入測試工程、並調試,你能夠很方便的看到python測試腳本的內容,什麼地方出了異常可以立刻發現,例如:
from ctypes import *
rc =c_int(-12345);
dll = windll.LoadLibrary("dmodbc.dll");#載入被測試組件
#=================#
SQLHANDLE_env = pointer(c_long(0));
SQLHANDLE_cnn = pointer(c_long(0));
SQLHANDLE_stmt = pointer(c_long(0));
pdns = c_char_p("FASTDB");
puid = c_char_p("SYSDBA");
ppwd = c_char_p("SYSDBA");
#env handle
rc = dll.SQLAllocHandle(1,None,byref(SQLHANDLE_env));
print "result of henv handle alloc :%d" %rc;
#cnn handle
rc = dll.SQLAllocHandle(2,SQLHANDLE_env,byref(SQLHANDLE_cnn));
print "result of cnn handle alloc :%d" %rc;
#connect!
rc = dll.SQLConnect(SQLHANDLE_cnn,pdns,-3,puid,-3,ppwd,-3)
print "result of connect :%d" %rc;
#stmt handle
rc = dll.SQLAllocHandle(3,SQLHANDLE_cnn,byref(SQLHANDLE_stmt));
print "result of stmt handle alloc:%d" %rc;
#exec
rc = dll.SQLExecDirect(SQLHANDLE_stmt,"insert into t values(1)",-3);
print "result of exec:%d" %rc;
#free========================
rc = dll.SQLFreeHandle(3, SQLHANDLE_stmt);
print rc;
rc = dll.SQLDisconnect(SQLHANDLE_cnn);
print rc;
rc = dll.SQLFreeHandle(2, SQLHANDLE_cnn);
print rc;
rc = dll.SQLFreeHandle(1, SQLHANDLE_env);
print rc;
在上面我們可以看到,Python調用c/c++介面是十分容易的,只需要把動態庫載入進來,然後把這個動態庫當作一個對象實例來使用就可以了。下面將是一個使用ado.net介面的例子:
import System;
from Dm import *#Dm是DMDBMS提供的ado.Net的DataProvider
#print dir(Dm.DmCommand);
i =0;
cnn = Dm.DmConnection("server = 127.0.0.1; User ID = SYSDBA; PWD = SYSDBA; Database = SYSTEM; port = 12345");
cmd = Dm.DmCommand();
cmd.Connection = cnn;
cmd.CommandText = "insert into t values(1);";
cnn.Open();
i=cmd.ExecuteNonQuery();
print i;
cmd.Dispose();
cnn.Close();
可以看到,.net對象的使用與在VisualStdio上進行開發幾乎沒有任何區別。
通過使用Python進行測試用例的開發,最大的好處莫過於:學習成本非常低,測試工程師只需要學習Python,對於其他語言稍有了解就可以了。同時只需要少量的測試開發工程師對Python測試框架進行維護。
這樣的好處就是便於測試人員將精力專精在一個方向,免於「什麼都會一點,但什麼都不精」的情況。當然測試人員具備廣闊的知識面,會使用各種常見的開發工具與平台是好事情,並且也是必要的,不過在短時間內要求迅速能夠勝任大多數任務也是企業在人才培養上的期望目標。
4. python網頁打不開
一、清除DNS解析緩存
關於電腦網頁打不開怎麼回事的問題,系統一般會緩存平時常用的DNS地址,這樣能加速對網路的快速訪問,但有時候這些DNS地址由於某種原因導致不正常,這會使網頁無法正常打開,就會導致網頁無法打開。清楚DNS緩存後一般就能解決問題了。
步驟1、按住快捷鍵「Windows+R鍵」,然後在彈出的對話框中輸入「CMD」,再按 Enter鍵
步驟2、在新彈出的命令提示符窗口中輸入「ipconfig /displaydns」,便可查看到系統之前使用過的DNS地址
步驟3、再輸入命令「ipconfig /flushdns」。該命令的主要作用是清楚DNS解析緩存
步驟4、再成功刷新DNS解析緩存後,重新打開瀏覽器,打開網頁是否能正常打開網頁了呢?
二、手動設置DNS解析伺服器
若清除系統DNS解析緩存後,還不能正常打開網頁,那就有可能是當前系統使用的DNS解析伺服器出故障了。一般情況下,上網都是通過路由器自動獲取IP地址和DNS伺服器地址,所以接下來要手動設置系統的DNS解析伺服器地址。
步驟1、打開控制面板→查看網路狀態和任務→更改適配器設置;
步驟2、找到網路連接→右鍵屬性→進入本地連接屬性設置頁面
步驟3、在網路連接屬性窗口中,找到 Internet協議版本4(TCP/IPv4),然後點擊「屬性」
步驟4、在Internet協議版本4(TCP/IPv4)的屬性設置窗口中,我們選擇「使用下面的DNS伺服器地址」,並且在下面的DNS伺服器地址欄中輸入相應的DNS伺服器地址,最後點擊「確定」