To the best of my knowledge, there are 2 possible way browsers may detect phishing pages: DNS detection and Blacklist/White List detection. In blacklist method, if a page has been reported by several users as a phishing scam, it is saved in the blacklist database. So, when a new user will visit that link, it will show that the site is unsafe.
In other way (DNS detection), if the URL of the phishing page resembles with a popular website or brand, the browser will regard it as phishing.
To tackle this problem, there are some plugins available from the famous sites, such as Norton, iZooLogic and ScrapeBox and they work in the same way.
So, as you can see, there are some clear limitations to these methods. The hackers keep coming up with new URLs with different names. There has been some developments in theory regarding front-end code as well, but not applied fully. This can also bypassed easily by making a few changes in the code of the phishing page.
So, that’s why it is almost impossible for browsers (for now at least) to completely stop the phishing attacks.