### V11 update

For new functions it is enough to use documented `Interactive` option:

    URLRead["https://httpbin.org/status/401", Interactive -> False]

----------


###Pre V11 era, `URLFetch` and friends solutions

There is an undocumented option `DisplayProxyDialog` which prevents that:

    URLFetch[
        "https://httpbin.org/status/401"
      , "StatusCode"
      , "DisplayProxyDialog" -> False
    ]

As OP noticed it works for `URLRead` even though it does not appear in `Options[URLRead]` in contrary to `Options[URLFetch]`.

When switched off you can handle 401 status code however you like, abort, prompt custom dialog etc.


----------

I have not guessed it, WRI Support suggested it to my friend when he asked:

> [...] Just informed by our development group that there is such an option (all-be-it undocumented):

> "DisplayProxyDialog" -> False

> to omit the authentication dialog. [...]

So I suppose this makes it safe to use.