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)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值