我百思不得其解,本身思考以下:綜合一、3,說明fake-useragent應該沒問題的,綜合三、4我懷疑這是知乎使用的一種反爬機制,故意將錯誤引到瀏覽器版本太低的網頁,但實際問題並不在此,在這中間花了整整半天時間,後面我又想到用個人另一臺電腦,而後將瀏覽器的useragent發送過來,而後使用發送過來的useragent從新請求知乎,發現並無異常。因而猛然想到fake-useragent中的useragent是隨機提取出來的,是否是有的提取出來的useragent是比較老舊的,因此知乎識別處理啊,致使出現異常呢?爲了驗證本身的想法,我又用fake-useragent隨機提取的useragent反覆請求,有的能成功,有的提示瀏覽器版本低的異常,遂驗證了個人想法。shell
綜上:知乎是一個對瀏覽器版本要求很高的網站,不少舊版的瀏覽器都不能訪問知乎,而fake-useragent內的請求頭數據並無一直更新到最新,只能測試多個,而後選擇可用的便可。瀏覽器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/60.0'}
re = requests.get(url, headers=headers) re.encoding = re.apparent_encoding print(re.text)
報錯以下:app
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 30: ordinal not in range(256)
此錯誤看着是編碼錯誤,實際上不是,我換一個user-agent又能夠了,其實這是由於瀏覽器在顯示User-Agent屬性時,應爲屬性值過長,因此使用了省略號,致使添加過程當中形成了編譯錯誤。scrapy