iT邦幫忙

0

請教關於python playwright被反爬的問題.

  • 分享至 

  • xImage

這是一個商業網站.
playwright登入操作各方面都沒問題.
目前卡關在按下觀看視頻會另外跳出一個新頁面
新分頁上本身有一個播放器.
但是如果是用playwright開啟的chromium瀏覽器
這個播放頁面一樣會出現.但是影片時長變成0分0秒
我做了一些測試如果用playwright開啟的chromium瀏覽器改成手動去操作
一樣播放時間變成0分0秒
但是此時我只要中斷python的腳本運作後
改用手動操作這個由playwright開啟的chromium瀏覽器卻可以播放視頻了.
如果不中斷python程序則影片時間長度變成0秒
究竟網站是怎樣判斷反爬的?
請教各位前輩高手指導它反爬的判斷是什麼?
一定要我們中斷python程序才可以播放視頻.

froce iT邦大師 1 級 ‧ 2024-03-20 10:13:22 檢舉
https://www.zenrows.com/blog/playwright-user-agent#what-is-playwright-user-agent

https://playwright.dev/python/docs/emulation#user-agent

先改User agent 字串試試。
playwright/selenium這類型的都是自動測試用的,基本上預設都會先改UA。
fdfanmo iT邦新手 5 級 ‧ 2024-03-20 12:40:40 檢舉
謝謝幫忙~
目前程式碼已加入UA不過還是被反爬了..
不清楚他用什麼來判斷的.
只要斷開python程序
一樣是用playwright.已開啟的瀏覽器卻馬上變成可以播放影片
from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False)
context = browser.new_context(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36")
page = context.new_page()
page.goto(URL)
fdfanmo iT邦新手 5 級 ‧ 2024-04-02 15:27:02 檢舉
froce大大..已改過UA但是依然無效.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
shijung
iT邦新手 4 級 ‧ 2024-03-20 13:06:53

應該是UA以外的參數去認定使用者是電腦導致,建議試試看用 user_data_dir
https://ithelp.ithome.com.tw/upload/images/20240320/20110615ON9h1kVMHv.png
假設使用Chrome 他會有一個User Data資料夾
複製一份命名為 User Data 1
然後程式引用那份資料試試看
https://playwright.dev/python/docs/api/class-browsertype
https://blog.csdn.net/weixin_42099874/article/details/129742856
browser_type.launch_persistent_context(user_data_dir)

fdfanmo iT邦新手 5 級 ‧ 2024-04-02 15:32:07 檢舉

謝謝shijung大:不過這個方法我測試了他會直接控制本地當前正在使用的瀏覽器.不過他會自動開啟一個新分頁時.這個分頁就一直是空白的.

0
SunM0on
iT邦新手 5 級 ‧ 2024-03-22 11:20:15

遇到這種問題,妳要考慮的是影片究竟是處於一個樣的狀態
0分0秒,加載沒有完成
那麼這個影片是在哪裡卡住了呢?
網頁渲染?請求等待?
如果是前者,代表你其實拿到了資料,但網頁經過一些手段沒能成功加載,所以也可能不是網站做了反爬,只是在某些狀況下,剛好因為你用selenium這類工具,造成bug無法渲染
後者的話,沒能成功取得資料,有可能就是真的被擋了,要想辦法繞開

妳要觀察的是 在妳中斷後,整個畫面開始運作時做了甚麼
所以正確的邏輯是
一進畫面就先F12 切到Network Tab 等到影片卡住的地方clear
然後關掉自動化程式運作,查看有沒有進行新的請求,
如果有,嘗試去分析js 這個請求觸發是怎麼觸發的(如果混淆到妳無法處理,其實妳該考慮放棄或找其他出路,除非妳願意投入時間)
如果沒有 那麼可能只是在渲染階段卡住了,但這個渲染階段被卡住可能狀況就很多樣化了,沒辦法一一列舉,妳有遇到再說吧

fdfanmo iT邦新手 5 級 ‧ 2024-04-02 15:34:02 檢舉

謝謝SunM0on大.目前我的技術水平上無法處理這類複雜的程序...>_<我再努力看看.

我要發表回答

立即登入回答