Nie chodzi mi o to, że nie da się sfabrykować, ale przyglądając się w czasie na różne elementy dojdzie się do tego kto co zrobił. Np. nagłówek wysłany przez chroma:
Kod
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Referer:http://forum.php.pl/PHP_f1.html
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10
Jeżeli taki podasz funkcji cURL to oczywiście wszystko zostanie odpowiednio sfabrykowane i w pierwszej chwili nic się nie da odkryć. Jednak gdy taki kod umieścisz na stałe w kodzie, to już po miesiącu okaże się, że chrome wydało 5 różnych wersji, a ty korzystasz dalej ze starego nagłówka. A przecież chrome aktualizuje się w tle bez jakiegokolwiek pytania nas o zdanie, więc raczej ten nagłówek będzie się zmieniać w czasie dla każdego normalnego użytkownika. Pozostaje kwestia ładowania obrazków i css tak jak już wspomniałeś, co jest raczej jednoznaczne z korzystaniem z bota, bo nawet przeglądarki typu lynx, typowo tekstowe starają się odebrać CSSa ze strony + nagłówki obrazków, które są w stanie jakoś przetworzyć np. bmp (chociaż nie jestem pewien czy akurat lynx wspiera wciąż obsługę bmp).