# User Agent 簡稱 UA,會讓服務器了解發送請求的客戶端的操作系統之類的訊息,在爬蟲時就是表明身分的概念 ## 常見 UA ### 解析 ``` Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 ``` 解析上方 : * `Mozilla/5.0` : 通常都是這個開頭(可以是 5.0 或 4.0--4.0是很古早的) * `Windows NT 10.0` : window 10 系統 下方提供更多案例 : :::spoiler - Windows NT 5.0 : Windows 2000 - Windows NT 5.1 : Windows XP - Windows NT 5.2 : Windows Server 2003 R2 - Windows NT 6.0 : Windows Vista 或 Windows Server 2008 - Windows NT 6.1 : Windows 7 或 Windows Server 2008 R2 - Windows NT 6.2 : Windows 8 或 Windows Server 2012 - Windows NT 6.3 : Windows 8.1 或 Windows Server 2012 R2 - Windows NT 10.0 : Windows 10 或 Windows Server 2016 ::: * `Win64; x64` : x64 版瀏覽器在 x64 版 Windows 上執行 下方提供更多案例 : :::spoiler - 沒特別註明 : x86 版瀏覽器在 x86 版 Windows 上執行 - WOW64 : x86 版瀏覽器在 x64 版 Windows 上執行 ::: * `AppleWebKit/537.36` : 瀏覽器內核 * `KHTML` : HTML 排版引擎 * `like Gecko` : 不是 Geckeo 瀏覽器,但是運行的像 Geckeo 瀏覽器 * `Chrome/119.0.0.0` : Chrome 的版本 * `Safari/537.36` : 因為 AppleWebKit 渲染引擎是 Apple 開發的,而Google 採用它,為了獲得伺服器端的正確回應,就進行偽裝 ### 範例 以下是常見的 UA 範例 : * PC/ Chrome : `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36` ### 看自己的 UA 執行以下步驟 : `F12` $\Rightarrow$ 到`web`裡面 $\Rightarrow$ 隨意點擊一個名稱裡的資料 $\Rightarrow$ 右方的 `header` 往下滑會找到 `User-Agent` # IP 這是自己電腦的定位 可以用 https://www.whatismyip.com.tw/ 來看自己目前的 IP 假設在爬蟲時不想給別人得知自己的 IP 可以使用下面的方法更改 IP : * 最推薦的當然還是 VPN,但大多數都要收費 * 這是可以獲取隨機 IP 的程式碼 雖然能順利執行,但似乎沒辦法使用它提供的 IP 進行爬蟲 https://github.com/Python3WebSpider/ProxyPool * 或是也可以使用現成的網站,但要登入之類的,不過也是免費 Scrapingdog:https://www.scrapingdog.com/ :::danger 資安小補充 如果只是單純更改自己的 IP 其實對於黑客來說還是有辦法得知你的真實 IP 所以有些黑客會使用更多的 IP 進行跳板 但太多的跳板可能會使連線非常緩慢 所以通常會用 3 - 5 個 IP 當作跳板 紅方(攻擊者) 通常會在跳板中加入路由器或 Cisco 的產品 這樣在攻擊之後可以把日誌清除掉 這樣藍方(防守方)在追蹤的時候就會找不到登陸的 IP 實現斷點 如果都是使用主機的話有機會被恢復日誌找回真實 IP 資料來源 : https://www.datarecovery.com.tw/news/hardware/2010-10-31/792.html ::: # python 中實做 先下載這個套件 ```python= pip install fake_useragent ``` :::warning 補充 : 假設下載了套件但執行時無法使用 請先在網路上找到 fake_useragent 的 .json 檔 接著改成裝在這個路徑當中 `"C:\Users\ACER\AppData\Local\Temp\"` 應該就可以使用了 ::: 然後就可以使用這個套件獲取到隨機的 UA 了 ```python= from fake_useragent import UserAgent ua = UserAgent() # Get a random browser user-agent string print(ua.random) ``` :::info 其實還可以有更多用法 可以從網路上找尋 ::: 得到 UA 後 就是要讓我們爬蟲時送出的請求包含我們隨機產生的 UA ```python= url = 'https://www.google.com/' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17'} response = get(url, headers=headers) html_doc = response.text ``` :::info 在 headers 當中其實還可以包含更多可以設定的參數 像是 accept 之類的 如果有必要可以視情況加入 ::: :::warning 補充--Referer : 假設遇到一些圖片之類的沒辦法直接爬取 這時可以在 headers 當中加入 'Referer':'...' 'Referer' 當中就是放入一個網站 這個網站就是我們要偽造請求的網站 像是爬圖片的話就可以放入這個圖片的主頁面的網址 ::: :::warning 補充--Proxy : 這是可以更改發送請求的 IP 下面是舉例 ``` # set ip and port proxy = "94.181.174.77:4153" chrome_options = webdriver.ChromeOptions() chrome_options.add_argument(f'--proxy-server={proxy}') driver = webdriver.Chrome(service = s, options=chrome_options) ``` ::: 除此之外,也可以設定延遲時間讓網站不會判斷是自動程式 ```python= time.sleep(2) # 延遲 2 秒 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up