How do we know which miner or pool mined a block? There are websites that talk about each mining pool's total % of hashrate.

I think they do that by calculating what % of the last X blocks were mined by a particular miner/pool.

But how can we know who mined a block?



Edit : this isn't a duplicate. 

That other question mentions that: "People could try to trace where the mined bitcoins are first seen and where they go. And you could trace the first IPs known to report the blocks"

Sites produce very detailed stats covering mining pools with as little as 0.3% of the global hash rate. see this

There's probably some very reliable method for doing this and I'd like a detailed answer about it.
We know which miner/pool mined a block only if that miner/pool chose to identify themselves.  Most commonly, they do this by inserting their name or other recognizable signature in the block's coinbase transaction, which is allowed to contain arbitrary data.  Sites like blockchain.info can then record statistics about how many blocks were mined by which pools.

You'll see entries even for very small pools if they identify themselves.  For instance KanoPool is shown on that page as having 0.3% of all hash power in the past 48 hours.  This is because they mined 1 block out of the roughly 288 total blocks during that time, which is 0.3%.  KanoPool apparently identifies its blocks with the string KanoPool (=O.O=) in the coinbase (example).

Presumably someone at blockchain.info is maintaining a list of known pools and their identifiers.  But it may not be complete; for instance, block 552572 has in its coinbase the string BTPOOL, which is presumably the name of some pool.  Blockchain.info lists it as "unknown", probably because BTPOOL isn't in their list of known identifiers.  Maybe they'll add it later.

Other blocks don't contain any recognizable identifier at all.  For instance, the coinbase of block 552568 doesn't contain anything that looks to me like text, and Blockchain.info doesn't recognize it either.  We won't ever know who mined this block unless they choose to identify themselves someday.  (For instance, maybe the data in that coinbase is a nonce signed with some private key; then someone could prove that they mined the block by signing some other data with that same key.)