Extraia o domínio registrado do URL com base na lista pública de sufixos

Dada uma URL, como extraio o domínio registrado usando oista de Sufixos Públicos (lista de TLDs efetivos, por exemplo,esta list)?

Por exemplo, considerandoa.bg é um sufixo público válido:

http://www.test.start.a.bg/hello.html -> start.a.bg 
http://test.start.a.bg/               -> start.a.bg
http://test.start.abc.bg/             -> abc.bg (.bg is the public suffix)

Isso não pode ser feito usando manipulação simples de cadeias, porque o sufixo público pode consistir em vários níveis, dependendo do TL

P.S. Não importa como leio a lista (banco de dados ou arquivo simples), mas a lista deve estar acessível localmente, de modo que nem sempre dependo de serviços externo

questionAnswers(3)

yourAnswerToTheQuestion