• 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是否隐藏成功!

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

  • 相关阅读:
    java设计模式概述
    Filter
    hello1 hello2 代码分析
    计划
    页面生命周期1
    Jquery
    关于DropDownList
    页面生命周期
    随机生成验证码
    关于技术
  • 原文地址:https://www.cnblogs.com/paomaliuju/p/5176371.html
Copyright © 2020-2023  润新知