Websites read it to decide which version of a page to send, and bot filters read it to see whether the visitor claims to be a browser. A library's default, such as the one Python sends, announces a script immediately.
Setting a realistic user agent is a basic step in any scraper, but it has to match everything else. A request that says Chrome and behaves nothing like Chrome is easier to spot than one that is honest about being a script. A proxy does not change the user agent.
Read next: Web scraping without getting blocked