python请求服务器时如何隐藏User-Agent

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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是否隐藏成功!

注:上述被注释的代码行是第一种方法的实现。

以上是关于python请求服务器时如何隐藏User-Agent的主要内容,如果未能解决你的问题,请参考以下文章

请求AppDataFolder时,Google云端硬盘API会返回错误“无效值”和“无效查询”

如何隐藏Apache版本号和其它敏感信息

Python实战:如何隐藏自己的爬虫身份

如何使用 Ruby 构建 HTTP 请求并将其发送到 Tor 隐藏服务

Python请求库遇到重试限制时如何访问服务器响应

如何在角度和弹簧应用程序中隐藏访问令牌?