本文結合上一篇文章“python利用有道翻譯實現“語言翻譯器”的功能”的實現代碼,對其進行加工,實現請求服務器時隱藏User-Agent。
python實現隱藏User-Agent的一般做法有兩種:
(1)在request對象生成之前(下面例子中的req),通過一個字典類型的head,將其作為參數傳入urllib.request.Request(url, data, head)中;
(2)在request對象生成之后(下面例子中的req),通過add_header()方法來實現。
import urllib.request import urllib.parse import json while True: content = input('請輸入需要翻譯的內容(退出輸入Q):') if content == 'Q': break else: url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/' #head = {} #head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36' data = {} data['type'] = 'AUTO' data['i'] = content data['doctype'] = 'json' data['xmlVersion'] = '1.8' data['keyfrom'] = 'fanyi.web' data['ue'] = 'UTF-8' data['action'] = 'FY_BY_CLICKBUTTON' data['typoResult'] = 'true' data = urllib.parse.urlencode(data).encode('utf-8') #req = urllib.request.Request(url, data, head) req = urllib.request.Request(url, data) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.31') response = urllib.request.urlopen(req) html = response.read().decode('utf-8') target = json.loads(html) print('翻譯的結果:%s' % target['translateResult'][0][0]['tgt'])
>>> 請輸入需要翻譯的內容(退出輸入Q):查爾頓 翻譯的結果:charlton 請輸入需要翻譯的內容(退出輸入Q):Q >>> req.headers {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.31'} >>>
我們可以通過req.headers來檢驗User-Agent是否隱藏成功!
注:上述被注釋的代碼行是第一種方法的實現。