xinchengo's blog

By xinchengo, history, 3 years ago, In English

Codeforces has recently adopted Cloudflare for security reasons. As a consequence, it brought some trouble to some remote judging providers. For example, the most popular ones, Vjudge and Luogu, can no longer scrape problem statements. Many Chinese competitve programmers are used to submitting Codeforces problem remotely, either to look for translation or to track their progress.

Although bot accounts do cause problems (topping the 'Most solved' page), they never become dominant. Instead, remote judging services are just like CLI clients, they only increases the popularity of Codeforces. Users of remote judging services make up a large part of Codeforces contestants. Codeforces has always been generous and provides an extensive set of APIs, which is uncommon among online judges. So I don't think Codeforces is cracking down on remote juding services on propose.

Is it possible for Codeforces to release an API for problem statements or specially treat bot accounts? Please be friendly to remote judging services.

Update: Luogu seemed to have fixed the issue.

  • Vote: I like it
  • +264
  • Vote: I do not like it

| Write comment?
»
3 years ago, hide # |
 
Vote: I like it +13 Vote: I do not like it

Auto comment: topic has been updated by xinchengo (previous revision, new revision, compare).

»
3 years ago, hide # |
 
Vote: I like it +10 Vote: I do not like it

However, codeforces does not actively stop remote judges, remote judges are turned down due to the cloudflare shield(prevent codeforces from ddos attack).

»
3 years ago, hide # |
 
Vote: I like it +77 Vote: I do not like it

Honestly, I don't understand why Codeforces should support different judges using its problems. They generally decrease the number of actual users of the platform itself. You cannot see different submissions of the same user and the "Most solved" page is broken, as you mentioned already.

  • »
    »
    3 years ago, hide # ^ |
     
    Vote: I like it -29 Vote: I do not like it

    As xinchengo stated, they do it for translation or to track progress.

    • »
      »
      »
      3 years ago, hide # ^ |
      Rev. 2  
      Vote: I like it +11 Vote: I do not like it

      You can track progress here, am I missing something?

      For the translations, you can translate the statements and then add a link to Codeforces. I don't see the issue and I am genuinely curious what is the appeal of these third-party judges.

      • »
        »
        »
        »
        3 years ago, hide # ^ |
         
        Vote: I like it +16 Vote: I do not like it

        I think s/he probably meant tracking progress across many different judges. CF does a good job in helping you track your progress (solutions/submissions), but only for the problems in CF.

        I once also considered using VJudge exclusively for practice just for this reason. Apart from the countless topic-specific contests, VJudge has this "Workbook" feature, where we kind of get a collection of problems (collected by others) from different OJs on a particular topic/difficulty. It seemed convenient to grind on those problems and track progress instead of hunting across multiple OJs. But unfortunately, VJudge doesn't allow automatically parsing submissions from other OJs as far as I'm aware of. So we need to submit through VJudge for this tracking of progress across different OJs method to work.

  • »
    »
    3 years ago, hide # ^ |
     
    Vote: I like it +6 Vote: I do not like it

    A possible reason could be: somesites may not be able to access fast enough from everywhere on the earth. Maybe codeforces already does really a good job, but accessing other sites like UVa in China is painfully slow. This time remoting judge is good choice I think.

»
3 years ago, hide # |
 
Vote: I like it -7 Vote: I do not like it

I think a good solution would be allowing people to link codeforces account using oauth to Vjudge or Luogu so that they can still track progress and get translations, and when they submit problems on the other OJ, it will submit using their account token or whatever.

»
3 years ago, hide # |
 
Vote: I like it +55 Vote: I do not like it

Cloudflare is garbage, if you are not on home ip with 1000x gigatracking fingerprint cookies enabled it endlessly harasses you with the "Checking if the connection is secure" page. It's unbelievable how many person-hours they've wasted. The financial value of that time is for sure in the millions USD, if not higher.

  • »
    »
    3 years ago, hide # ^ |
     
    Vote: I like it +20 Vote: I do not like it

    It is also a man-in-the-middle-as-a-service

  • »
    »
    3 years ago, hide # ^ |
    Rev. 2  
    Vote: I like it +4 Vote: I do not like it

    Add to that the fact that Codeforces uses supercookies and browser fingerprinting, and you get a privacy nightmare.

    Maybe I'll stop using Codeforces in the distant future as a personal choice — it has a great community and learning resources, but I've been seriously doubting if all of that is worth it (for me, not for others).

    Edit: one way to understand why this is even relevant is that even though you might trust Codeforces, what would you do if it has a security breach?

»
3 years ago, hide # |
 
Vote: I like it +17 Vote: I do not like it

Cloudflare is really annoying. The only meaning of it is to make you click the stupid button to verify you are a human when you are hurry to sumbit your code.

»
3 years ago, hide # |
 
Vote: I like it +81 Vote: I do not like it

Explain that to people who write bots that spam solutions and destroy testing. If allowed in contests, every contest will be unrated because of queue issues. Or, even more likely, people who care about rating so much that they are prepared to ruin the fun for everyone will use bots to spam solutions to make the round unrated when they do badly in a round. And since somebody always does badly in a round and there is no shortage of stupid people...

This protects cf from ddos with a small cost for normal users. Yes, it seems that the cost is bigger for people who use remote judges. Pity. I don't care tbh.

  • »
    »
    3 years ago, hide # ^ |
     
    Vote: I like it +16 Vote: I do not like it

    Allowing other online judges is controversial, but the comments in this blog don't mention the effect it has on other bots which are for using the CF API, which don't even make submissions (copy pasted from my other comment):

    I agree, the anti-DDoS is becoming not just a problem for human users but for legitimate bots trying to access data as well. I've noticed that both the USACO TLE bot as well as a lockout bot I'm hosting give CF API error ever since the change happened, so I think it's related to that. MikeMirzayanov could you please fix this or suggest a workaround?

    As for the solution-spamming bots, I think a more lenient limit on number of submissions per user would work? For example no more than 10 submissions per contiguous 10-minute window (there was some other online judge that did this but I forgot which) should be plenty for human users. If Codeforces will still support the other online judges, perhaps these bot users should be verified before they are allowed to make more submissions.

    The new change definitely helps keep Codeforces usable for all its users, but it's good that the community is bringing up these issues so that Mike is aware and can hopefully find a better fix.

»
3 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

For websites like vjudge, archiving from submission records is good enough, as it doesn't increase the judge queue and can track the progress. Submit by bot account is a waste of judge resources.

»
3 years ago, hide # |
Rev. 2  
Vote: I like it +8 Vote: I do not like it

If the problem to solve with Captcha is to prevent bots doing DDOS attack during contest, why don't we only enable the captcha during the contest and disable it when there's no active contest?

Not sure if this is a good idea but at least during no contest is running, then remote judge like vjudge still can be able to access the crawler like usual right?

  • »
    »
    3 years ago, hide # ^ |
     
    Vote: I like it +8 Vote: I do not like it

    This is a really good idea. I also want to add something to it.

    I believe that captcha should be enabled at least 30 minutes before any contest starts in order to make speedsolvers able to open the problem as quickly as possible.