python请求服务器时如何隐藏User-Agent
本文结合上一篇文章“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是否隐藏成功!
注:上述被注释的代码行是第一种方法的实现。