0

Warning: this question does not represent a security concern and really isn't all that serious.

The problem lies with this badge:
enter image description here
Which is awarded for: Visited every section of the FAQ.

However, instantly earn this badge by opening up the JavaScript console in your browser and entering:

$.ajax({ url: '/faq/read', type: 'POST',
data: { fkey: StackExchange.options.user.fkey } });

Congratulations! You just earned a badge.


Now for the technical explanation:

The way this badge appears to be implemented, when you expand each section of the FAQ, an AJAX request is made to /faq/read, granting you the badge. The code that checks whether each section has been expanded is completely client-side and the server trusts completely that the user actually did expand each of those sections (note that it doesn't trust that the user has read the sections - there's no way of ever being able to do that).

The solution? Well... there really isn't one that I can come up with. Even visiting multiple pages to earn the badge can be scripted.

Any suggestions for ways to make this more difficult are welcome.

4
  • 15
    It's a bronze badge. A bronze badge щ(゚Д゚щ)
    – a cat
    Commented Oct 15, 2011 at 19:42
  • 17
    Did it take you more time or less time than just clicking each section of the FAQ to figure that out? Commented Oct 15, 2011 at 20:45
  • This question can be applied to other simple 'learn to use the site' badges. This does not deserve closing. Commented Jul 14, 2014 at 11:38
  • Closing this question is entirely appropriate. The Analytical badge is retired and no longer gets awarded. Thus, the problem can no longer be reproduced, as "changes to the system ... have rendered it obsolete." Commented Jul 15, 2014 at 0:11

3 Answers 3

16

Warning: this answer contains an instance of irony. It also contains an instance of sarcasm.

So? The user has visited every section of the FAQ. With the help of a browser, sure, but that's necessary anyway, unless you go and read the server's disks with a magnetized needle like a real programmer. (It might not work so well.)

I propose that in order to expand each section of the FAQ, you must solve a captcha. That will ensure that a human being is doing the expansion.

Well, you did say you wanted to make visiting every section of the FAQ more difficult.

The point of this badge is to get people to read the FAQ. If they're going to go out of their way not to read the FAQ, there's nothing you can do.

Ok, there is: you can do a reading comprehension test. Or at least a reading test, like AT&T Research does when you want to download ksh. I'm not sure how well that would work, but this (unlike the previous one) isn't a ridiculous idea.

8
  • 4
    A captcha... good idea! I never thought of that. Commented Oct 15, 2011 at 19:35
  • Probably one of the biggest frustrations is that most of the FAQ is identical across all SE sites - so if I've read it once, I've read 95% of the content in all of the others. I'm certainly not advocating it, but this little script could avoid expanding blocks of text for 30 minutes straight to get the badge on all of the sites. Commented Oct 15, 2011 at 19:37
  • 6
    @GeorgeEdison Or you could just not care about badges you're unwilling to earn? I don't have anything to say in my profile, so I don't have autobiographer, even though it's trivial to get Commented Oct 15, 2011 at 19:40
  • 2
    I hate captchas .. and having to do multiple captchas to expand multiple sections, gah... FAQ it.
    – Stephen
    Commented Oct 15, 2011 at 19:41
  • Okay, to avoid any further confusion, I'm not saying that a captcha is worth implementing. I just happened to think that it does answer the question I asked and therefore is a "good idea". Commented Oct 15, 2011 at 19:52
  • 1
    @Stephen WTF? How can someone possibly take the captcha suggestion seriously? Commented Oct 15, 2011 at 19:53
  • 5
    @Gilles: surely the point of stephen's comment was to make the FAQ it pun?
    – jrturton
    Commented Oct 15, 2011 at 19:57
  • I've updated the question now. Commented Oct 15, 2011 at 20:21
6

To echo Gilles, So? It Probably takes less time to do this manually than by hacking around with JavaScript. There should probably be a separate badge for reading it mechanically to prove how L33t you are.

The value of the badge comes from the fact that it highlights that the FAQ exists at all. I know I didn't read every section of it until I'd been a member for a month or so and was scrabbling round for any easy badges to earn.

It's only a bronze one. You should worry more about those dastardly people using robots to log in every day to win the Enthusiast and Fanatic badges.

11
  • I think we can all agree that copy-and-pasting that line of code takes all of 10 seconds. Expanding each section of the FAQ takes longer than that. Commented Oct 15, 2011 at 19:45
  • 8
    Speak for yourself, I don't even know where the JavaScript console is on my browser :)
    – jrturton
    Commented Oct 15, 2011 at 19:48
  • I second @jrturton.
    – Oxwivi
    Commented Oct 16, 2011 at 9:07
  • 1
    I'd been a member for "2 years, 10 months" and just got the badge today. I stopped caring about badges after the first few months and that one was newer. Of course, I had to try the obvious approach just for fun: $(".show-more").click(). Now, where's that badge-gaming badge?
    – patridge
    Commented Oct 18, 2011 at 21:28
  • @Oxwivi jrturton was probably being sarcastic. It can't be possible. Is it really possible that you do not know how to use a js console and you're on this website? Commented Jun 22, 2014 at 5:07
  • @Camilo 99.9% of the time you'd be right and I probably am being sarcastic, but in this case, I meant it. In the nearly three years since I wrote that, I've still not found out, either, so it's obviously not a key requirement for me.
    – jrturton
    Commented Jun 22, 2014 at 8:26
  • @jrturton Whoa, I recommend you to give it a look then. Javascript is a good language to add to your utility belt :) Commented Jun 22, 2014 at 10:14
  • @CamiloMartin No idea when I posted that comment, but I've learned where the console is since. Though didn't learn any of JS until just recently.
    – Oxwivi
    Commented Aug 2, 2014 at 7:59
  • @Oxwivi Here's what I think about javascript (run that in a console). Commented Aug 2, 2014 at 19:14
  • @CamiloMartin How did that work? Something to do with arrays? But how did empty values turn into string/text?
    – Oxwivi
    Commented Aug 6, 2014 at 20:18
  • @Oxwivi Implicit casting. Here, I made an explanation for you: pastebin.com/6KADb7DD Commented Aug 8, 2014 at 15:56
6

I don't think it's a big problem really. If you're smart enough to figure that out for yourself, in order to game the badge, or you've already found meta (and this question to copy and paste it from) then it seems likely that you already:

  1. understand Q&A and the mechanics of the site
  2. can find the FAQ at appropriate points in time

These two things seem to be the point of the badge so it doesn't seem like there's anything being lost by from the perspective of the site by gaming it like that.

Not the answer you're looking for? Browse other questions tagged .