AdBlockPlus is a very useful ad-blocking plugin. Or other common ad-blocking tools on the market, I believe many people have used them. Anyone who has used these ad-blockers while watching iQIYI has encountered this situation, where a black screen prompt appears indicating that the ad has been blocked, and you have to wait for several seconds. I happened to encounter this situation as well, and after Googling it, it seemed no one had proposed a solution. So, I debugged iQIYI’s JS and successfully resolved the issue. Here, I will simply share my thoughts.
After enabling the AdBlockPlus plugin, play any video on iQIYI.

The numbers on the black screen will keep decreasing until the video starts playing. At this time, open the console and search for the keyword blocked.

Jump to the sources panel, and it will break at line 3183 of mars_v.js.

Hover the cursor over i.innerText to display the current value, which is the same as the value displayed on the black screen, representing the remaining waiting time. Press esc to bring up the console, change the value of t or r.currentCount to verify that changing the waiting time is indeed feasible.
The total waiting time t is 45s, so we change r.currentCount to 40, which means the black screen time will be reduced to 5s.


As expected, the black screen time is reduced to 5s.

After a few seconds, the video starts playing normally, proving that this method is effective. If we set the value to 0, the black screen would disappear entirely. However, we can’t modify the value by setting a breakpoint every time. Although there are many other ways to modify it, such as the 45s time being fixed.

Chrome can map and replace JS files, but that’s overkill. By browsing through the entire JS code, I found that all it does is handle operations after the ad is blocked. So, I simply disabled this JS file.
How to prevent the browser from loading a specific file? The first thing that comes to mind might be

Blocking the URL request this way doesn’t work because each request comes with a random number, so it doesn’t take effect. The correct way is to use the network request blocking panel in Chrome, adding an asterisk after the JS file’s URL, allowing the use of wildcards.

This way, you can block the loading of this JS file. However, there’s a problem: the blocked list only takes effect when the console is open. So, this effect won’t be visible here, but this method is very useful when debugging.
So, I tried to find a blocking method in the ABP plugin, and indeed, the advanced options in the plugin’s configuration page provide a custom filter list. We can add filtering rules here, and it will take effect globally.

Here are some suggestions for setting up the ABP plugin.

Now that the ad-blocking JS file for iQIYI has been disabled, refresh iQIYI to see the effect.
This successfully resolves the issue and is very simple. Be thoughtful and daring to try. Many problems will be very simple.
One more knowledge point to add: Why add a random number after the requested JS file?
When repeatedly requesting the same URL, it may return a 304 status. If the client sends a conditional GET request and the request is allowed, but the document’s content has not changed since the last access or according to the request’s conditions, the server should return a 304 status code. Simply put: the server has executed the GET, but the file has not changed.
At this point, a timestamp or random number needs to be added so that the browser thinks it’s a new request each time and doesn’t read from the cache.
Think about it: If the JS file that detects ad-blocking on iQIYI is not a separate file but is combined with other logic code, directly blocking the JS loading would prevent the video from playing. How would you handle it?
Feel free to think about it and discuss it with me?