1. 程式人生 > >UA:User-agent是什麼?

UA:User-agent是什麼?

PC上對限制在微信客戶端訪問的html頁面進行除錯:
對這種web頁面進行自動化測試: 1.將瀏覽器的UA(user-Agent)改為微信客戶端的UA  ---》相當於利用微信客戶端開啟html5網頁
2.如果頁面有微信的OAUTH驗證,需要增加Cookie來實現驗證  ---》相當於登入資訊,沒有登入頁面那些功能
只要完成以上兩部應該就能操作該頁面了。

User Agent中文名為使用者代理,簡稱 UA 它是一個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本、CPU 型別、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器外掛等。
 UA:user-agent,使用者代理,作用是告訴伺服器,傳送請求的者的身份,可以通過修改瀏覽器的UA模擬XXX向伺服器傳送請求,因為有些情況下伺服器會指定請求者的身份的, 如: 1.微信自帶的瀏覽器用pc瀏覽器是會提示“請利用微信客戶端開啟連線” ,微信伺服器主要根據下面加粗的欄位判斷。 Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456MicroMessenger
/6.5.7 NetType/WIFI Language/zh_CN
主要通過 MicroMessenger 欄位判斷是否為微信客戶端瀏覽器,如果有這個欄位就是微信客戶端瀏覽器
2.Python利用requests爬取某些網頁時,網頁伺服器會通過UA判斷是否是程式發來的請求,造成請求失敗的,需要修改UA.
'''Chrome:
1.將瀏覽器的UA(user-Agent)改為微信客戶端的UA  ---》相當於利用微信客戶端開啟html5網頁
2.如果頁面有微信的OAUTH驗證,需要增加Cookie來實現驗證  ---》相當於登入資訊,沒有登入頁面那些功能
'''
from selenium import webdriver
from time import sleep
#設定使用者代理,將瀏覽器的UA(user-Agent)改為微信客戶端的UA
WIDTH = 320
HEIGHT = 640
PIXEL_RATIO = 3.0
UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 MicroMessenger/6.5.7 NetType/WIFI Language/zh_CN'
mobileEmulation = {"deviceMetrics": {"width": WIDTH, "height": HEIGHT, "pixelRatio": PIXEL_RATIO}, "userAgent": UA}
options = webdriver.ChromeOptions()
options.add_experimental_option('mobileEmulation', mobileEmulation)
driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=options)
driver.get('http://n.weixin12315.com/index.aspx?m=13715527926')
#向瀏覽器增加微信登入的cookies
cookie1 = {"name":"Hm_lpvt_0c07b431efa5fa4153b94126d35560e2","value":"1494083726,1494085269,1494126201"}
cookie2 = {"name":"ASP.NET_SessionId","value":"ia3yvgkxmjk2rst4jlxauf5o"}
driver.add_cookie(cookie1)
driver.add_cookie(cookie2)
#我的購物車
#driver.find_element_by_xpath("html/body/div[1]/div/div[5]/div/ul/li[3]/a").click()
#我的訂單
driver.find_element_by_xpath("html/body/div[1]/div/div[5]/div/ul/li[2]/a").click()
#cookies = driver.get_cookies()
#print(cookies)
sleep(5)
driver.close()