python笔记(二十二) 隐藏爬虫

这里是最基本的方法
用上节课的例子

网站检测head中的user-agent是否和用户直接去用浏览器访问时的一样
所以把这个数据传进去就可以了

 #隐藏head
    head = {}
    head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'
 #获得文件
    req = urllib.request.Request(url,data,head)
    response = urllib.request.urlopen(req)

这里传入url ,data,head三个数据


网站检测的另一种方法是检测访问频率
所以我们在最后设置一个沉睡时间3秒

time.sleep(3)

完整代码

import urllib.request   #申请数据
import urllib.parse  #解析
import json
import time

while True:
    
    #输入翻译文本
    content = input('输入翻译文本(输入q!结束)')

    if content == 'q!':
        break

    #链接
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    #源地址是 http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
    #但是会出现errorcode:50 去掉里面的_o就可以了,鬼知道这是为什么

    #隐藏head
    head = {}
    head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'

    #数据
    data = {}
    data['i'] = content
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] = 'fanyideskweb'
    data['salt'] = '15946979284607'
    data['sign'] = '435d1688ed58d07624822d5eae596de8'
    data['ts'] = '1594697928460'
    data['bv'] = '6275445dcf58d2f326d4a0dd44c9b352'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_CLICKBUTTION'

    #编码函数
    data = urllib.parse.urlencode(data).encode('UTF-8')

    #获得文件
    req = urllib.request.Request(url,data,head)
    response = urllib.request.urlopen(req)

    #将utf-8的文件解码
    html = response.read().decode('UTF-8')

    target = json.loads(html)
    print('翻译结果:%s ' % (target['translateResult'][0][0]['tgt']))

    time.sleep(3)

python笔记(二十二) 隐藏爬虫_第1张图片

你可能感兴趣的:(入门学习)