Python爬蟲實戰:修改User-Agent

1. 前言

有些網站不喜歡被程序訪問,因此他們會檢查鏈接的來源。如果訪問來源不是正常的途徑,就給你“掐掉”。所以爲了讓我們的爬蟲更好的爲我們服務,需要對代碼進行一些改進–隱藏-,讓它看起來更像是普通人通過普通瀏覽器的正常點擊

2. 修改User-Agent

通過查閱幫助文檔,可知Request有個headers參數,通過設置這個參數,可以僞造成瀏覽器訪問。設置這個headers參數有兩種途徑:
(1)實例化Request對象的時候將headers參數傳進去
(2)通過add_header()方法往Request對象添加headers

  1. 實例化Request對象的時候將headers參數傳進去
    這裏可以藉助Postman這個工具,具體可參考
    生成
    在這裏插入圖片描述
headers = {
    'Host': "fanyi.youdao.com",
    'Referer': "http://fanyi.youdao.com/?keyfrom=dict2.index",
    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    }

代碼:

import urllib.request
import urllib.parse
import json
# 瀏覽器請求的網址
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
headers = {
    'Host': "fanyi.youdao.com",
    'Referer': "http://fanyi.youdao.com/?keyfrom=dict2.index",
    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    }
content=input("請輸入需要翻譯的內容:")
data={}
# data['i']='I love you'
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_CLICKBUTTION'
data['typoResult']='false'
# 使用urllib.parse.urlencode()轉換字符串
data = urllib.parse.urlencode(data).encode('utf-8')
req=urllib.request.Request(url,data,headers)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
target = json.loads(html)
print("翻譯結果:%s"% (target['translateResult'][0][0]['tgt']))
  1. 通過add_header()方法往Request對象添加headers
req=urllib.request.Request(url,data)
req.add_header('Referer','http://fanyi.youdao.com/?keyfrom=dict2.index')
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
target = json.loads(html)
print("翻譯結果:%s"% (target['translateResult'][0][0]['tgt']))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章