We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
コードを拝見したところ、本家Ad Speedupのプロモーション非表示による検知はないものの、自動クリックによる検知はこちらも影響を受けます。
A/Bテストab_fk_sk_clが有効な場合のみ機能するもので、https://www.youtube.com/s/desktop/87423d78/jsbin/desktop_polymer.vflset/desktop_polymer.jsのこのあたりです:
ab_fk_sk_cl
https://www.youtube.com/s/desktop/87423d78/jsbin/desktop_polymer.vflset/desktop_polymer.js
function kqb() { var a, b, c; return t(function(d) { a = new Yi; b = document.createElement("button"); b.classList.add("ytp-ad-skip-button"); b.style.opacity = "0"; b.style.height = "0px"; b.style.width = "0px"; b.style.padding = "0px"; b.style.border = "none"; c = function() { b.parentElement && b.parentElement.removeChild(b) }; b.onclick = function() { a.resolve(0); c() }; document.body.appendChild(b); setTimeout(function() { c(); a.resolve(1) }, 50); return d.return(a.promise) }) }
罠のスキップボタンで自動クリックを検知しています。テスト対象者でなくても、安定して警告が送られるブラウザプロファイルがあればyt.config_.EXPERIMENT_FLAGS.ab_fk_sk_clをtrueに設定することで再現可能です。
yt.config_.EXPERIMENT_FLAGS.ab_fk_sk_cl
true
A/Bテストによらず、自動クリックが実際に発動すると検知されます。https://www.youtube.com/s/player/5683fc5e/player_ias.vflset/ja_JP/base.jsのこのあたりです:
https://www.youtube.com/s/player/5683fc5e/player_ias.vflset/ja_JP/base.js
SG = function(a, b) { var c = 1, d = []; try { var e = document.querySelector(".ytp-ad-skip-button-slot"); e ? "none" === getComputedStyle(e).display ? d.push("BISCOTTI_BASED_DETECTION_STATE_IS_BUTTON_INVISIBLE") : d.push("BISCOTTI_BASED_DETECTION_STATE_IS_BUTTON_VISIBLE") : d.push("BISCOTTI_BASED_DETECTION_STATE_IS_BUTTON_NOT_FOUND") } catch (f) { d.push("BISCOTTI_BASED_DETECTION_STATE_IS_FINDING_BUTTON_FAILURE") }!0 === a.isTrusted ? d.push("BISCOTTI_BASED_DETECTION_STATE_IS_CLICK_EVENT_TRUSTED") : !1 === a.isTrusted ? d.push("BISCOTTI_BASED_DETECTION_STATE_IS_CLICK_EVENT_NOT_TRUSTED") : d.push("BISCOTTI_BASED_DETECTION_STATE_IS_CLICK_EVENT_TRUSTED_UNDEFINED"); d.includes("BISCOTTI_BASED_DETECTION_STATE_IS_CLICK_EVENT_NOT_TRUSTED") && (c = 0); EB("ISDSTAT", c); ixa(c, "i.s_", { Uca: "sk", metadata: b, states: d }); return c };
私が以前本家をテストしたときの記憶では、倍速スキップだけでも大半の広告は対応できていたと思います。
そもそも、3ストライクアウトに到達したアカウントでログインしていて、かつ、警告無視を繰り返してYoutubeによるロックオンが有効になっている場合(持続期間は数日~1週間ほど)を除けば警告が送られること自体まれです。警告が送られていなければ何をしても警告は出ません。ただこれにはytInitialPlayerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModelが定義されていないのみならず、fetch/xhrを通してplayerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModelが送られていないことのチェックが必要と思われるため、コードの大幅な加筆と権限追加が必要になると思います。 [追記] JSON.parse()とResponse.json()をフックして確認するだけなら権限はいらないかもです。
ytInitialPlayerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModel
playerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModel
JSON.parse()
Response.json()
検知コードをみてわかるように、.ytp-ad-skip-buttonの親を指定(.ytp-ad-skip-button-container > .ytp-ad-skip-button)するだけで回避できるため、変更が最小で済みます。警告が送られ、かつ、倍速再生ではスキップできない状況というのは非常にまれだと思います。倍速再生が機能しなかったときだけクリックするようにすればより安全かと。
.ytp-ad-skip-button
.ytp-ad-skip-button-container > .ytp-ad-skip-button
The text was updated successfully, but these errors were encountered:
@Yuki2718 有益な情報いただきありがとうございます。大変助かります。
Sorry, something went wrong.
No branches or pull requests
コードを拝見したところ、本家Ad Speedupのプロモーション非表示による検知はないものの、自動クリックによる検知はこちらも影響を受けます。
問題1:積極的検知
A/Bテスト
ab_fk_sk_cl
が有効な場合のみ機能するもので、https://www.youtube.com/s/desktop/87423d78/jsbin/desktop_polymer.vflset/desktop_polymer.js
のこのあたりです:検知コード1
罠のスキップボタンで自動クリックを検知しています。テスト対象者でなくても、安定して警告が送られるブラウザプロファイルがあれば
yt.config_.EXPERIMENT_FLAGS.ab_fk_sk_cl
をtrue
に設定することで再現可能です。問題2:受動的検知
A/Bテストによらず、自動クリックが実際に発動すると検知されます。
https://www.youtube.com/s/player/5683fc5e/player_ias.vflset/ja_JP/base.js
のこのあたりです:検知コード2
対策案1:自動クリックをやめる
私が以前本家をテストしたときの記憶では、倍速スキップだけでも大半の広告は対応できていたと思います。
対策案2:警告が送られていないときだけ自動クリックする
そもそも、3ストライクアウトに到達したアカウントでログインしていて、かつ、警告無視を繰り返してYoutubeによるロックオンが有効になっている場合(持続期間は数日~1週間ほど)を除けば警告が送られること自体まれです。警告が送られていなければ何をしても警告は出ません。ただこれには
ytInitialPlayerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModel
が定義されていないのみならず、fetch/xhrを通してplayerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModel
が送られていないことのチェックが必要と思われるため、コードの大幅な加筆と権限追加が必要になると思います。[追記]
JSON.parse()
とResponse.json()
をフックして確認するだけなら権限はいらないかもです。対策案3:積極的検知だけ対応する
検知コードをみてわかるように、
.ytp-ad-skip-button
の親を指定(.ytp-ad-skip-button-container > .ytp-ad-skip-button
)するだけで回避できるため、変更が最小で済みます。警告が送られ、かつ、倍速再生ではスキップできない状況というのは非常にまれだと思います。倍速再生が機能しなかったときだけクリックするようにすればより安全かと。The text was updated successfully, but these errors were encountered: