Один из подходов состоит в том, чтобы включить JavaScript в форму входа в систему и сделать так, чтобы форма не могла быть успешно отправлена, если этот JavaScript не запущен. Это делает вашу форму входа доступной только для людей с включенным JavaScript, которых нет у CURL. Если необходимый JavaScript-код - это своего рода запрос / ответ, который каждый раз отличается (например, используйте что-то вроде http://www.ohdave.com/rsa/, чтобы сделать его нетривиальным), наличие правильно заданного значения в форме является хорошим доказательством того, что JavaScript побежал.
Вы не сможете остановить все автоматизированные сценарии, хотя достаточно просто написать сценарии, которые управляют действующим механизмом браузера, и они пройдут этот тест.