The World's Smallest Web Browser
Pure Bash (no utilities), 200 bytes - 40 bonus = 160
while read u;do
u=${u#*//}
d=${u%%/*}
exec 3&lt;&gt;/dev/tcp/$d/80
echo &quot;GET /${u#*/} HTTP/1.1
host:$d
Connection:close
&quot;&gt;&amp;3
mapfile -tu3 A
a=${A[@]}
a=${a#*&lt;p&gt;}
a=${a%&lt;/p&gt;*}
echo &quot;${a//&lt;\/p&gt;*&lt;p&gt;/&quot;
&quot;}&quot;
done

I think this is up to the spec, though of course watch out for parsing HTML using regex I think the only thing worse than parsing HTML using regex is parsing HTML using shell pattern matching.
This now deals with &lt;p&gt;...&lt;/p&gt; spanning multiple lines.  Each &lt;p&gt;...&lt;/p&gt; is on a separate line of output:
$ echo &quot;http://example.com/&quot; | ./smallbrowse.sh
This domain is established to be used for illustrative examples in documents. You may use this     domain in examples without prior coordination or asking for permission.
&lt;a href=&quot;http://www.iana.org/domains/example&quot;&gt;More information...&lt;/a&gt;
$