I know one way to interact with contracts is, in the geth interface, to use the command:
eth.contract(ABI).at(Address)
But for this I will need to know the ABI and address of the contract in advance. What if I want to browse the contracts currently in the blockchain (like browsing the apps in play-store)?