Because of the title of this thread (i think you are wrong with external ip blocking) I have to chime in.
The Python Anywhere team has to be restrained in their responses because this is their business, but since I'm just another user, I can say something they can't. That is...DON'T BLAME THEM. PA had the ability to connect out. It was in the service for all of us including FREE accounts. A problem arose they had no choice but to deal with it...people were making free accounts and performing activities that had the potential to get all of PA shut down. No group in their right minds would allow jerks to come along and ruin what they are doing for a living without trying to stop them. PA was left without choice. They absolutely had to deal with this problem. Then in a style that they regularly use...they took some time to consider all the possibilities on how to handle the situation. I wasn't in the conversation, but looking at their track record I'd bet cash they tried to figure out ANY way to stop the jerks without hurting our friends that hold FREE accounts. In the end...after considering technical limitations and the problem of THE WORLD WE LIVE IN...they made the only choice they could. A compromise on blocking with an exception list that is as liberal as they could do under the circumstances.
I for one applaud PA for their method and conclusion on this matter. Please don't be frustrated at them. Realize who caused this and take it out on them. If you still have any doubt try this...Stop, think if I owned PA and had this problem. What would I do. Most of us if honest would have done something less generous in solving the problem.
Thank-you Python Anywhere, I know you have to make difficult decisions too often, but that is the world we all live in!