Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Receiving You may use wrong User-Agent when submitting to Codeforces #117

Closed
hotarunw opened this issue Nov 16, 2020 · 13 comments · Fixed by #120 or #125
Closed

Receiving You may use wrong User-Agent when submitting to Codeforces #117

hotarunw opened this issue Nov 16, 2020 · 13 comments · Fixed by #120 or #125
Labels

Comments

@hotarunw
Copy link

Description

When I try to submit to Codeforces, it receives wrong User-Agent error message and this submission failed.

[WARNING] You may use wrong User-Agent: 'online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj)'
[FAILURE] submission failed

Error log

I have already signed into Codeforces using CUI-based login.
$ oj login https://codeforces.com/contest/1447/problem/A
[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.5.0)
[INFO] service recognized: CodeforcesService.from_url('https://codeforces.com/'): https://codeforces.com/contest/1447/problem/A
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 200 OK
[FAILURE] You are not signed in.
[INFO] Trying to open Chrome via WebDriver...
[ERROR] Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

[INFO] Trying to open Firefox via WebDriver...
[ERROR] Message: 'geckodriver' executable needs to be in PATH.

[INFO] Trying to open Edge via WebDriver...
[ERROR] Message: 'MicrosoftWebDriver.exe' executable needs to be in PATH. Please download from http://go.microsoft.com/fwlink/?LinkId=619687

[INFO] Trying to open Internet Explorer via WebDriver...
[ERROR] Message: 'IEDriverServer.exe' executable needs to be in PATH. Please download from http://selenium-release.storage.googleapis.com/index.html and read up at https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

[INFO] Trying to open Safari via WebDriver...
[ERROR] SafariDriver was not found; are you running Safari 10 or later? You can download Safari at https://developer.apple.com/safari/download/.
[INFO] Trying to open Opera via WebDriver...
[ERROR] Message: 'operadriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

[ERROR] No WebDriver is available.
[HINT] Please install a WebDriver.
See https://www.selenium.dev/documentation/en/webdriver/driver_requirements/

Detailed instructions:
    If you use Ubuntu:
        1. Run $ sudo apt install chromium-chromedriver firefox-geckodriver
    If you use Ubuntu under Windows Subsystem for Linux:
        1. Make a symbolic link from cookie.jar in WSL to cookie.jar out of WSL. For example, run $ ln -s /mnt/c/Users/%USERNAME%/AppData/Local/online-judge-tools/online-judge-tools/cookie.jar /home/ubuntu/.local/share/online-judge-tools/cookie.jar
        2. Use `oj login` outside of WSL
    If you use Windows:
        1. Install Chocolatey. See https://chocolatey.org/
        2. Run > choco install selenium-all-drivers

[WARNING] Switch to use CUI-based login instead of Selenium
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 200 OK
Username: seiran
Password:
[NETWORK] POST: https://codeforces.com/enter
[NETWORK] redirected to: https://codeforces.com/
[NETWORK] 200 OK
[INFO] Welcome, seiran.
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 302 Found
[SUCCESS] You have already signed in.
[INFO] save cookie to: /home/hotaru/.local/share/online-judge-tools/cookie.jar
$ oj s submit.cpp
[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.5.0)
[INFO] read history from: /home/hotaru/.cache/online-judge-tools/download-history.jsonl
[INFO] found urls in history:
https://codeforces.com/contest/1447/problem/A
[INFO] guessed problem: https://codeforces.com/contest/1447/problem/A
[INFO] problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1447/problem/A'): https://codeforces.com/contest/1447/problem/A
[INFO] code (1239 byte):

** MY SOLUTION **

[INFO] load cookie from: /home/hotaru/.local/share/online-judge-tools/cookie.jar
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 302 Found
[INFO] You are logged in.
[NETWORK] GET: https://codeforces.com/contest/1447/problem/A
[NETWORK] 200 OK
[INFO] both GCC and Clang are available for C++ compiler
[INFO] use: GCC
[INFO] chosen language: 61 (GNU G++17 9.2.0 (64 bit, msys 2))
[INFO] sleep(3.00)
Are you sure? [y/N] y
[NETWORK] GET: https://codeforces.com/contest/1447/problem/A
[NETWORK] 200 OK
[NETWORK] POST: https://codeforces.com/contest/1447/problem/A
[NETWORK] 403 Forbidden
[ERROR] 403 Client Error:  for url: https://codeforces.com/contest/1447/problem/A
Traceback (most recent call last):
  File "/home/hotaru/.local/lib/python3.8/site-packages/onlinejudge/service/codeforces.py", line 389, in submit_code
    resp.raise_for_status()
  File "/home/hotaru/.local/lib/python3.8/site-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error:  for url: https://codeforces.com/contest/1447/problem/A
[WARNING] You may use wrong User-Agent: 'online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj)'
[FAILURE] submission failed

Environment

Ubuntu under Windows Subsystem for Linux

Windows

  • エディション: Windows 10 Pro
  • バージョン: 20H2
  • OS ビルド: 19042.630

WSL

  • WSL version: WSL2
  • Linux distribution: Ubuntu 20.04.1 LTS

Python and oj

$ python3 --version
Python 3.8.5
$ oj --version
online-judge-tools 11.1.1 (+ online-judge-api-client 10.5.0)

Other notes

  • Will you try to create a pull request?
    • no
@kmyk kmyk added bug Something isn't working difficulty:high priority:high labels Nov 16, 2020
@kmyk
Copy link
Member

kmyk commented Nov 16, 2020

@hotaroon Thank you for reporting! (This is well-written bugreport 😄)

Conclusion: Let me wait and see how it goes.

While waiting, the same issue will reported at cf-tool, or Codeforces may change the logic.
I'll investigate further when this is not fixed even after a while (in this weekend?)

Observation

I could reproduce the issue, but the precise condition is still unknown.
My observations are:

  1. At first, the submissions succeeded regardless the User-Agent. (User-Agent is irreverent)
  2. The first few times submissions succeeded, but after all submissions failed. (it seems "banned")
  3. Submissions from my GUI browser (Google Chrome) succeeds even after the "ban". (the "ban" is not associated with IP address nor account)
  4. However, after removing the cookie ~/.local/share/online-judge-tools/cookie.jar and re-login, submissions from online-judge-tools still fails. (the "ban" is not associated with the session)

There are many difference between HTTP requests from online-judge-tools and from GUI browsers (e.g. referer, CSRF token, etc.), so probably one of them is the cause.

Logs

User-Agent requests/2.24.0, success

$ oj-api submit-code https://codeforces.com/contest/1336/problem/A --file foo.cpp --language 61
INFO:onlinejudge_api.main:online-judge-api-client 10.5.0
INFO:onlinejudge_api.main:sleep 1.000000 sec
INFO:onlinejudge.dispatch:problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1336/problem/A'): https://codeforces.com/contest/1336/problem/A
INFO:onlinejudge.dispatch:contest recognized: <onlinejudge.service.codeforces.CodeforcesContest object at 0x7fa26bafd828>: https://codeforces.com/contest/1336/problem/A
INFO:onlinejudge.dispatch:service recognized: CodeforcesService.from_url('https://codeforces.com/'): https://codeforces.com/contest/1336/problem/A
INFO:onlinejudge.utils:load cookie from: /home/user/.local/share/online-judge-tools/cookie.jar
INFO:onlinejudge._implementation.utils:network: GET: https://codeforces.com/contest/1336/problem/A
INFO:onlinejudge._implementation.utils:network: 200 OK
INFO:onlinejudge._implementation.utils:network: POST: https://codeforces.com/contest/1336/problem/A
INFO:onlinejudge._implementation.utils:network: redirected to: https://codeforces.com/contest/1336/my
INFO:onlinejudge._implementation.utils:network: 200 OK
INFO:onlinejudge.service.codeforces:success: result: https://codeforces.com/contest/1336/my
INFO:onlinejudge.utils:save cookie to: /home/user/.local/share/online-judge-tools/cookie.jar
{"status": "ok", "messages": [], "result": {"url": "https://codeforces.com/contest/1336/my"}}

User-Agent online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj), success

$ oj s https://codeforces.com/contest/1447/problem/A foo.cpp
[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.5.0)
[INFO] read history from: /home/user/.cache/online-judge-tools/download-history.jsonl
[INFO] found urls in history:

[INFO] problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1447/problem/A'): https://codeforces.com/contest/1447/problem/A
[INFO] code (12 byte):
hello world

[INFO] load cookie from: /home/user/.local/share/online-judge-tools/cookie.jar
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 302 Found
[INFO] You are logged in.
[NETWORK] GET: https://codeforces.com/contest/1447/problem/A
[NETWORK] 200 OK
[INFO] both GCC and Clang are available for C++ compiler
[INFO] use: GCC
[INFO] chosen language: 61 (GNU G++17 9.2.0 (64 bit, msys 2))
[WARNING] the problem "https://codeforces.com/contest/1447/problem/A" is specified to submit, but no samples were downloaded in this directory. this may be mis-operation
[INFO] sleep(3.00)
Are you sure? Please type "A" A
[NETWORK] GET: https://codeforces.com/contest/1447/problem/A
[NETWORK] 200 OK
[NETWORK] POST: https://codeforces.com/contest/1447/problem/A
[NETWORK] redirected to: https://codeforces.com/contest/1447/my
[NETWORK] 200 OK
[SUCCESS] result: https://codeforces.com/contest/1447/my
[INFO] open the submission page with browser: <webbrowser.BackgroundBrowser object at 0x7f9cbf231240>
[INFO] save cookie to: /home/user/.local/share/online-judge-tools/cookie.jar

User-Agent online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj), failure

$ oj s https://codeforces.com/contest/1447/problem/A foo.cpp                                             
[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.5.0)
[INFO] read history from: /home/user/.cache/online-judge-tools/download-history.jsonl
[INFO] found urls in history:

[INFO] problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1447/problem/A'): https://codeforces.com/contest/1447/problem/A
[INFO] code (24 byte):
hello hello world hello

[INFO] load cookie from: /home/user/.local/share/online-judge-tools/cookie.jar
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 302 Found
[INFO] You are logged in.
[NETWORK] GET: https://codeforces.com/contest/1447/problem/A
[NETWORK] 200 OK
[INFO] both GCC and Clang are available for C++ compiler
[INFO] use: GCC
[INFO] chosen language: 61 (GNU G++17 9.2.0 (64 bit, msys 2))
[WARNING] the problem "https://codeforces.com/contest/1447/problem/A" is specified to submit, but no samples were downloaded in this directory. this may be mis-operation
[INFO] sleep(3.00)
Are you sure? Please type "A" A
[NETWORK] GET: https://codeforces.com/contest/1447/problem/A
[NETWORK] 200 OK
[NETWORK] POST: https://codeforces.com/contest/1447/problem/A
[NETWORK] 403 Forbidden
[ERROR] 403 Client Error:  for url: https://codeforces.com/contest/1447/problem/A
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 389, in submit_code
    resp.raise_for_status()
  File "/home/user/.local/lib/python3.6/site-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error:  for url: https://codeforces.com/contest/1447/problem/A
[WARNING] You may use wrong User-Agent: 'online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj)'
[FAILURE] submission failed

User-Agent Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36, failure

$ oj-api --user-agent 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36' submit-code https://codeforces.com/contest/1336/problem/A --file foo.cpp --language 61 INFO:onlinejudge_api.main:online-judge-api-client 10.5.0 INFO:onlinejudge_api.main:sleep 1.000000 sec INFO:onlinejudge.dispatch:problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1336/problem/A'): https://codeforces.com/contest/1336/problem/A INFO:onlinejudge.dispatch:contest recognized: : https://codeforces.com/contest/1336/problem/A INFO:onlinejudge.dispatch:service recognized: CodeforcesService.from_url('https://codeforces.com/'): https://codeforces.com/contest/1336/problem/A INFO:onlinejudge.utils:load cookie from: /home/user/.local/share/online-judge-tools/cookie.jar INFO:onlinejudge._implementation.utils:network: GET: https://codeforces.com/contest/1336/problem/A INFO:onlinejudge._implementation.utils:network: 200 OK INFO:onlinejudge._implementation.utils:network: POST: https://codeforces.com/contest/1336/problem/A INFO:onlinejudge._implementation.utils:network: 403 Forbidden ERROR:onlinejudge.service.codeforces:403 Client Error: for url: https://codeforces.com/contest/1336/problem/A Traceback (most recent call last): File "/home/user/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 389, in submit_code resp.raise_for_status() File "/home/user/.local/lib/python3.6/site-packages/requests/models.py", line 943, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 403 Client Error: for url: https://codeforces.com/contest/1336/problem/A WARNING:onlinejudge.service.codeforces:You may use wrong User-Agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36' ERROR:onlinejudge_api.main:You may use wrong User-Agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36': 403 Client Error: for url: https://codeforces.com/contest/1336/problem/A Traceback (most recent call last): File "/home/user/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 389, in submit_code resp.raise_for_status() File "/home/user/.local/lib/python3.6/site-packages/requests/models.py", line 943, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 403 Client Error: for url: https://codeforces.com/contest/1336/problem/A

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/user/.local/lib/python3.6/site-packages/onlinejudge_api/main.py", line 288, in main
result = submit_code.main(problem, file=parsed.file, language_id=parsed.language, session=session)
File "/home/user/.local/lib/python3.6/site-packages/onlinejudge_api/submit_code.py", line 31, in main
submission = problem.submit_code(code, language_id=language_id, filename=str(file), session=session)
File "/home/user/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 394, in submit_code
raise SubmissionError('You may use wrong User-Agent: {}: {}'.format(repr(session.headers.get('User-Agent')), e))
onlinejudge.type.SubmissionError: You may use wrong User-Agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36': 403 Client Error: for url: https://codeforces.com/contest/1336/problem/A
{"status": "error", "messages": ["onlinejudge.type.SubmissionError: You may use wrong User-Agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36': 403 Client Error: for url: https://codeforces.com/contest/1336/problem/A"], "result": null}

@kmyk
Copy link
Member

kmyk commented Nov 25, 2020

I merged a commit #120 to fix this issue.

I think this is fixed, but it's difficult to prove that this types of problems are truly fixed.
Please re-open or comment to this issue when this issue remains.

@peroon
Copy link

peroon commented Nov 25, 2020

同じ問題が私にも今起こりました。ojは最新です。

提出用formタグを見てみるとcsrf_tokenが設定されているようで、
一方ojのcodeforces.pyにはその記述はありません。

これは関係ないでしょうか?
(的はずれな指摘でしたらすみません・・・)

@R1B3n-13
Copy link

The issue remains after the update. 😭😭

@kmyk kmyk reopened this Nov 26, 2020
@kmyk
Copy link
Member

kmyk commented Nov 26, 2020

Okay. I'll investigate this issue again 🙇

@kmyk
Copy link
Member

kmyk commented Nov 26, 2020

I cannot reproduce this error now. All of consecutive eight submissions succeeded. It seems to be fixed, at least on my environment.

@peroon 分かりにくいんですが csrf_token は実はすでに含まれているはずです。<form> タグが解析され自動で送信されています。(リンク)
@peroon @Tard1grad3 Can you give me the detailed log ($ oj --verbose s https://... ... or something) with contexts (e.g. the first and second submission succeeded but the third submission failed.)? For this, please be careful not to include secret values like CSRF tokens. Thank you!

@hotarunw
Copy link
Author

@kmyk This is my detailed log.
I've submitted 2-3 times, but all submissions have failed.
(I hid CSRF token.)

$ oj --verbose s https://codeforces.com/contest/1454/problem/B submit.cpp
[DEBUG] load the cache for update checking: /home/hotaru/.cache/online-judge-tools/pypi.json
[DEBUG] load the cache for update checking: /home/hotaru/.cache/online-judge-tools/pypi.json
[DEBUG] args: Namespace(cookie=PosixPath('/home/hotaru/.local/share/online-judge-tools/cookie.jar'), file=PosixPath('submit.cpp'), guess=True, guess_cxx_compiler='gcc', guess_cxx_latest=True, guess_python_interpreter='cpython', guess_python_version='auto', language=None, open=True, subcommand='s', url='https://codeforces.com/contest/1454/problem/B', verbose=True, version=False, wait=3, yes=True)
[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.6.0)
[INFO] read history from: /home/hotaru/.cache/online-judge-tools/download-history.jsonl
[INFO] found urls in history:
https://codeforces.com/contest/1454/problem/B
[INFO] problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1454/problem/B'): https://codeforces.com/contest/1454/problem/B
[INFO] code (908 byte):

** MY SOLUTION **

[DEBUG] User-Agent: online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj)
[INFO] load cookie from: /home/hotaru/.local/share/online-judge-tools/cookie.jar
[NETWORK] GET: https://codeforces.com/enter
[DEBUG] Starting new HTTPS connection (1): codeforces.com:443
[DEBUG] https://codeforces.com:443 "GET /enter HTTP/1.1" 302 0
[NETWORK] 302 Found
[INFO] You are logged in.
[NETWORK] GET: https://codeforces.com/contest/1454/problem/B
[DEBUG] https://codeforces.com:443 "GET /contest/1454/problem/B HTTP/1.1" 200 None
[NETWORK] 200 OK
[DEBUG] file extension: .cpp
[DEBUG] language guessing: C++
[DEBUG] all lang ids for C++: ['52', '42', '50', '54', '2', '59', '61']
[INFO] both GCC and Clang are available for C++ compiler
[INFO] use: GCC
[DEBUG] lang ids after compiler filter: ['42', '50', '54', '2', '59', '61']
[DEBUG] lang ids after version filter: ['61']
[INFO] chosen language: 61 (GNU G++17 9.2.0 (64 bit, msys 2))
[INFO] sleep(3.00)
[NETWORK] GET: https://codeforces.com/contest/1454/problem/B
[DEBUG] https://codeforces.com:443 "GET /contest/1454/problem/B HTTP/1.1" 200 None
[NETWORK] 200 OK
[DEBUG] form: <form action="?csrf_token=********************************" class="submitForm" enctype="multipart/form-data" method="post"><input name="csrf_token" type="hidden" value="********************************"/>
<input name="ftaa" type="hidden" value=""/>
<input name="bfaa" type="hidden" value=""/>
<input name="action" type="hidden" value="submitSolutionFormSubmitted"/>
<input name="submittedProblemIndex" type="hidden" value="B"/>
<input name="source" type="hidden" value=""/>
<table class="table-form" style="width:90%;">
<tr>
<td class="field">Language:</td>
<td>
<select name="programTypeId">
<option value="43">GNU GCC C11 5.1.0</option>
<option value="52">Clang++17 Diagnostics</option>
<option value="42">GNU G++11 5.1.0</option>
<option value="50">GNU G++14 6.4.0</option>
<option value="54">GNU G++17 7.3.0</option>
<option value="2">Microsoft Visual C++ 2010</option>
<option value="59">Microsoft Visual C++ 2017</option>
<option selected="selected" value="61">GNU G++17 9.2.0 (64 bit, msys 2)</option>
<option value="65">C# 8, .NET Core 3.1</option>
<option value="9">C# Mono 6.8</option>
<option value="28">D DMD32 v2.091.0</option>
<option value="32">Go 1.15.2</option>
<option value="12">Haskell GHC 8.10.1</option>
<option value="60">Java 11.0.6</option>
<option value="36">Java 1.8.0_241</option>
<option value="48">Kotlin 1.4.0</option>
<option value="19">OCaml 4.02.1</option>
<option value="3">Delphi 7</option>
<option value="4">Free Pascal 3.0.2</option>
<option value="51">PascalABC.NET 3.4.2</option>
<option value="13">Perl 5.20.1</option>
<option value="6">PHP 7.2.13</option>
<option value="7">Python 2.7.15</option>
<option value="31">Python 3.7.2</option>
<option value="40">PyPy 2.7 (7.2.0)</option>
<option value="41">PyPy 3.6 (7.2.0)</option>
<option value="8">Ruby 2.7.1</option>
<option value="49">Rust 1.42.0</option>
<option value="20">Scala 2.12.8</option>
<option value="34">JavaScript V8 4.8.0</option>
<option value="55">Node.js 12.6.3</option>
</select>
</td>
</tr>
<tr style="padding: 0; margin: 0; height: 0.5rem;line-height: 1rem;">
<td style="padding: 0; margin: 0; height: 0.5rem;"></td>
<td style="padding: 0; margin: 0; height: 0.5rem;">
<span class="programTypeNotice notice small" style="position: relative; bottom:7px;"> </span>
</td>
</tr>
<tr>
<td class="field">Choose file:</td>
<td>
<input name="sourceFile" type="file" value=""/>
</td>
</tr>
<tr>
<td colspan="2">
<div style="text-align: center;">
<div style="position: relative; display: inline-block;">
<input class="submit" style="width:10em;" type="submit" value="Submit"/>
<img class="ajax-loading-gif" src="//sta.codeforces.com/s/77249/images/ajax-loading-24x24.gif" style="display:none; position: absolute; right:-24px; bottom:0;"/>
</div>
</div>
</td>
</tr>
</table>
</form>
[DEBUG] input: <input name="csrf_token" type="hidden" value="********************************"/>
[DEBUG] input: <input name="ftaa" type="hidden" value=""/>
[DEBUG] input: <input name="bfaa" type="hidden" value=""/>
[DEBUG] input: <input name="action" type="hidden" value="submitSolutionFormSubmitted"/>
[DEBUG] input: <input name="submittedProblemIndex" type="hidden" value="B"/>
[DEBUG] input: <input name="source" type="hidden" value=""/>
[DEBUG] input: <input name="sourceFile" type="file" value=""/>
[DEBUG] input: <input class="submit" style="width:10em;" type="submit" value="Submit"/>
[DEBUG] User-Agent is temporarily disabled. The old User-Agent is 'online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj)'
[NETWORK] POST: https://codeforces.com/contest/1454/problem/B
[NETWORK] data: {'csrf_token': '********************************', 'ftaa': '', 'bfaa': '', 'action': 'submitSolutionFormSubmitted', 'submittedProblemIndex': 'B', 'source': '', 'sourceFile': '', 'programTypeId': '61'}
[DEBUG] https://codeforces.com:443 "POST /contest/1454/problem/B HTTP/1.1" 403 431
[NETWORK] 403 Forbidden
[ERROR] 403 Client Error:  for url: https://codeforces.com/contest/1454/problem/B
Traceback (most recent call last):
  File "/home/hotaru/.local/lib/python3.8/site-packages/onlinejudge/service/codeforces.py", line 389, in submit_code
    resp.raise_for_status()
  File "/home/hotaru/.local/lib/python3.8/site-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error:  for url: https://codeforces.com/contest/1454/problem/B
[WARNING] You may use wrong User-Agent: 'online-judge-tools/11.1.1 (+https://github.com/online-judge-tools/oj)'
[FAILURE] submission failed

OS is WSL.
oj is up to date.

$ oj --version
online-judge-tools 11.1.1 (+ online-judge-api-client 10.6.0)
$ python3 --version
Python 3.8.5

@peroon
Copy link

peroon commented Nov 26, 2020

hotaroonさんが書いているので書いていませんでしたが、
私もhotaroonさんと同じログです!

@R1B3n-13
Copy link

My log is also the same as hotaroon.

@kmyk
Copy link
Member

kmyk commented Dec 14, 2020

@hotaroon @peroon @Tard1grad3
I believe that I've fixed this bug by #125. online-judge-api-client package is updated to v6.1.0 now. Could you upgrade the package and check it again?

@peroon
Copy link

peroon commented Dec 15, 2020

I upgraded and checked.
same issue...
I paste the log below. (csrf replaced)

$ oj s answer.cpp 
[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.6.1)
[INFO] read history from: /home/peroon/.cache/online-judge-tools/download-history.jsonl
[INFO] found urls in history:
https://codeforces.com/contest/1461/problem/A
[INFO] guessed problem: https://codeforces.com/contest/1461/problem/A
[INFO] problem recognized: CodeforcesProblem.from_url('https://codeforces.com/contest/1461/problem/A'): https://codeforces.com/contest/1461/problem/A
[INFO] code (5601 byte):
#ifdef LOCAL
    #define _GLIBCXX_DEBUG
    #define __clock__
#else
    #pragma GCC optimize("Ofast")
#endif
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
... (245 lines) ...
    cin.tie(0);
    ios::sync_with_stdio(false);

    // input
    ll N;_(trailing whitespace)
    cin>>N;
    while(N--)solve();
____(trailing whitespace)
    return 0;
}(no trailing newline)
[INFO] load cookie from: /home/peroon/.local/share/online-judge-tools/cookie.jar
[NETWORK] GET: https://codeforces.com/enter
[NETWORK] 302 Found
[INFO] You are logged in.
[NETWORK] GET: https://codeforces.com/contest/1461/problem/A
[NETWORK] 200 OK
[INFO] both GCC and Clang are available for C++ compiler
[INFO] use: GCC
[INFO] chosen language: 61 (GNU G++17 9.2.0 (64 bit, msys 2))
[INFO] sleep(3.00)
Are you sure? [y/N] y
[NETWORK] GET: https://codeforces.com/contest/1461/submit
[NETWORK] 200 OK
[NETWORK] POST: https://codeforces.com/contest/1461/submit?csrf_token=5d14288xxxxxxxxxxx
[NETWORK] 403 Forbidden
[ERROR] 403 Client Error:  for url: https://codeforces.com/contest/1461/submit?csrf_token=5d14288xxxxxxxxxxx 
Traceback (most recent call last):
  File "/home/peroon/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 392, in submit_code       
    resp.raise_for_status()
  File "/home/peroon/.local/lib/python3.6/site-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error:  for url: https://codeforces.com/contest/1461/submit?csrf_token=5d14288xxxxxxxxxxx
[WARNING] You may use wrong User-Agent: None
[ERROR] 403 Client Error:  for url: https://codeforces.com/contest/1461/submit?csrf_token=5d14288xxxxxxxxxxx 
Traceback (most recent call last):
  File "/home/peroon/.local/lib/python3.6/site-packages/onlinejudge_command/main.py", line 271, in main
    run_program(parsed, parser=parser)
  File "/home/peroon/.local/lib/python3.6/site-packages/onlinejudge_command/main.py", line 241, in run_program
    submit(args)
  File "/home/peroon/.local/lib/python3.6/site-packages/onlinejudge_command/subcommand/submit.py", line 136, in submit     
    submission = problem.submit_code(code, language_id=LanguageId(args.language), session=sess)
  File "/home/peroon/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 397, in submit_code       
    raise e
  File "/home/peroon/.local/lib/python3.6/site-packages/onlinejudge/service/codeforces.py", line 392, in submit_code       
    resp.raise_for_status()
  File "/home/peroon/.local/lib/python3.6/site-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error:  for url: https://codeforces.com/contest/1461/submit?csrf_token=5d14288xxxxxxxxxxx

@kmyk
Copy link
Member

kmyk commented Dec 15, 2020

Thank you for checking!
It seems this issue remains even with the patch at v10.6.1. I'll try to fix this once again.

@kmyk
Copy link
Member

kmyk commented Dec 17, 2020

I've investigated this issue further, and finally decided to keep it broken.
Please read #127. Sorry for inconvenience, and thank you for understanding.

Also, thank you @hotaroon @peroon @Tard1grad3 for helping me with debugging.

@kmyk kmyk closed this as completed Dec 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
4 participants