Are there things that can be done to make it always work
No. There will always be a high risk that it will fail, otherwise people would be double spending all the time and everyone would be waiting for multiple confirmations, instead of some services accepting zero confirmation transactions.
Is there a specific block explorer that publishes the transaction faster
It's not a case of publishing it faster, but rather, the speed at which it propagates through the network. You need the first transaction to be broadcast to nodes which are used by the intended recipient/victim or the block explorer of their choice, and you need the second transaction to be broadcast to nodes used by miners, but not those nodes which have already seen the first transaction. You could theoretically work out optimum entry points through significant trial and error, but doing so would be costly, time consuming, wouldn't guarantee anything, and could change at any time as nodes come online and drop offline.
maybe changes in the transaction that the transaction with lower fees cannot be accepted?
No. Once a transaction has been signed and broadcast, it can't be changed to become invalid (excluding transaction malleability if the transaction is built upon a previous unconfirmed transaction, but that doesn't apply here).