To add upon user208574’s answer regarding ring colors: By toying with [GamePress’s catch calculator](https://pokemongo.gamepress.gg/catchcalc#/) or just by catching a lot of common Pokémon, you can get a feel for how often common Pokémon escape from certain throws. [GamePress writes](https://pokemongo.gamepress.gg/ditto-mechanics):

> According to u/paanvaannd's extensive research, Ditto most often disguises as:
> 
> - Pidgey
> - Zubat
> - Rattata
> - Magikarp

and

> Ditto has a Base Capture Rate (BCR) of 16%, among the lowest in-game for an unevolved Pokemon. In comparison, the common Pokemon it disguises as all have BCR of 40% or 56%. This means Ditto is 3-4 times harder to catch. If you throw an excellent curved Ultra Ball and that Pidgey still breaks out, it might be a Ditto (or knowing your luck, it might not).

Baserate neglect is a common human bias, so due to the low Ditto baserate you’ll still be disappointed a lot, but for me it means that when a Pidgey escapes from my Razz Berry–augmented curved great Poké Ball (and I’m lucky enough that it doesn’t flee), I’ll switch to Razz-Berried Ultra Balls just in case.