코멘트를 남겨주세요


16

직무:

이 질문에 대한 의견을 남기는 프로그램을 만드십시오. 내용은이어야합니다 1234567890123456.

편집 :

  1. 당신은 귀하의 사용자 이름과 암호를 떠날 수 UP당신이 사용자 이름과 암호를 사용하는 경우. (적용된다면)

  2. URL 단축기 없음 (해당되는 경우)

  3. 브라우저 콘솔을 사용하지 못할 수 있습니다.


27
도전이 끝날 때받은 편지함의 스크린 샷을 게시하십시오 ...
Martin Ender

1
코드를 테스트하는 사람들에게 : 제출 한 후 주석을 삭제하고,이 도전에 대한 주석이 불필요하게 길고 스팸이되지 않도록하고 모드 작업을보다 쉽게하기 위해 주석을 삭제하십시오.
Mego

1
아무도 이것이 잘못되었다고 생각하지 않습니까? 내가 어떻게 그런 짓을합니까? 질문이 독립적 인 것이 아닌가? API 문서에 대한 링크는 어디에 있습니까?
고양이

4
@cat 사양이 다소 희박하다는 데 동의하지만, 말할 필요가있는 전체가 없기 때문이라고 생각합니다. 또한 질문에 Stack Exchange API를 사용할 필요가 없으므로 질문에 API 문서를 포함시키는 것이 다소 불필요합니다.
Alex A.

3
기존 답변과 의견을보고 있기 때문에 명확하지 않은 투표는 나에게 허용되는 입력을 명시 적으로 허용 목록에 추가해야합니다 (일반 읽기 답변에는 입력이 없을 수 있지만 일부는 인증을받는 것으로 보입니다) 사용자 이름과 비밀번호를 사용하여 로그인해야한다는 암시 된 요구 사항을 무시하고 세부 사항을 무시 함); b) " 사용자 이름과 비밀번호를 각각 U와 P로 남겨 둘 수 있습니다 "라는 의미를 명확하게하기 위해 ( "U"와 "P"를 하드 코딩하라는 말로 해석하지만 다른 사람들이 다르게 해석 한 것으로 해석합니다).
피터 테일러

답변:


11

jQuery가있는 자바 스크립트, 127 바이트

$.post("//codegolf.stackexchange.com/posts/84546/comments",{comment:"12345678901‌​23456",fkey:StackExchange.options.user.fkey})

몇 바이트 동안 Ismael Miguel과 nicael에게 감사합니다.

그만큼 fkey 매개 변수는 계정마다 고유하며 StackExchange 페이지가 열린 상태에서 브라우저의 로컬 저장소 내용을 검사하여 찾을 수 있습니다. 이 코드는 열려있는 StackExchange 세션이있는 브라우저에서 실행해야합니다. fkey브라우저의 로컬 스토리지에서 매개 변수를 자동으로로드합니다 (이 제출물의 이전 버전에서는 수동으로 입력해야했습니다).

불행히도, ppcg.lolURL은 POST 요청을 통과하지 않기 때문에 사용할 수 없습니다.

재미있는 사실 : 적절한 fkey값 없이이 코드를 실행하려고 하면 HTTP 418 응답이 나타납니다.

teapot

fkeyChrome 에서 값 을 찾는 방법의 예 :

fkey

분명히 Winterbash 물건은 여전히 ​​저장되고 있습니다. 산뜻한.

참고로 바닐라 자바 ​​스크립트에서 동일한 것은 314 바이트입니다 (일부 바이트는 Ismael Miguel과 nicael에게 다시 감사드립니다).

with(new XMLHttpRequest()){
open("POST","//codegolf.stackexchange.com/posts/84546/comments",1)
setRequestHeader("Content-type","application/x-www-form-urlencoded")
setRequestHeader("Content-length",62)
setRequestHeader("Connection","close")
send("comment=1234567890123456&fkey="+StackExchange.options.user.fkey}))}

나는 단지 이것을 쓰려고했다. 스택 스 니펫을 추가하십시오.
NoOneIsHere7

셀레늄 대신 요청을 사용하여 사이트에 액세스하는 방법이 마음에 듭니다.
Meinkraft

1
@NoOneIsHere 스택 스 니펫은 브라우저의 쿠키 / 세션 데이터에 액세스하지 않고 샌드 박스로 실행되기 때문에 불가능합니다. 또한 스택 스 니펫이 POST 요청을 허용하는지 확실하지 않습니다.
Mego

3
@IsmaelMiguel 코드에서 한 문자의 대문자를 실수로 놓친 것에 대한 공감대는 약간 어리석은 것처럼 보이지만 그것은 당신의 전화입니다. 이제 수정되었습니다.
Mego

2
약간의 오타 때문에 @IsmaelMiguel Downvoting입니다.
Mego

14

Safari가있는 AppleScript, 269 287 바이트

tell application "Safari"
activate
tell window 1
set current tab to (make new tab with properties {URL:"http://codegolf.stackexchange.com/q/84546"})
delay 5
do JavaScript "$('a')[66].click();$('textarea')[0].val('1234567890123456');$('input')[5].click()" in current tab
end tell
end tell

이를 사용하려면 Safari 개발자 설정을 활성화 한 다음 활성화해야합니다 Allow JavaScript from Apple Events 합니다. 기존 키 체인 + 쿠키를 사용하는 것이 부정 행위인지 아닌지 잘 모르겠습니다.

또한 클릭과 키 입력을 자동화하여 OSX의 Automator 에서이 작업을 수행했지만 도전에 대한 아이디어가 사실이라고 생각하지 않았습니다.


2
안녕하세요, PPCG에 오신 것을 환영합니다! 대단해! 부정 행위가 아닙니다. 또한 모든 JavaScript 답변에 JS를 활성화해야 합니다.
NoOneIsHere7

PPCG에 오신 것을 환영합니다! 이것은 독창적 인 답변이지만 사용자 이름과 비밀번호를 입력으로 사용하지 않기 때문에 자체적으로 포함 된 것은 아닙니다.
패트릭 로버츠

1
@Sirens 답변 주셔서 감사합니다. 방금 질문을 편집하여 URL 단축기를 사용할 수 없습니까?
Meinkraft

1
작동하지 않는 것 같습니다 ... 댓글 링크가 아닌 플래그 링크를 클릭한다는 의미입니다.
nicael

1
OP는 URL 단축기를 허용하지 않는 문제를 수정하여 ppcg.lol을 codegolf.stackexchange.com으로 교체 할 때까지이 답변을 무효화합니다.
Alex A.

7

Selenium Webdriver가 포함 된 Python 3.5, 485 427 469 461 449 414 403 바이트 :

from selenium.webdriver import*;import time;D=Chrome();I=lambda k:D.find_element_by_name(k);C='comment';D.get('http://www.codegolf.stackexchange.com/users/login');I('email').send_keys(U);Z=I('password');Z.send_keys(P);Z.submit();D.get('http://www.codegolf.stackexchange.com/questions/84546');D.find_element_by_link_text('add a '+C).click();E=I(C);E.send_keys('1234567890123456');time.sleep(1);E.submit()

간단한 Python 셀레늄 웹 드라이버 솔루션을 활용하는 전체 프로그램입니다. ChromeDriver가 설치되어 있어야 하지만 Chrome에서 작동합니다. 이름을 변경하여 작품 UP각각 사용자의 스택 교환 이메일과 비밀번호로. 그러나 ChromeDriver를 설치하는 데 문제가있는 경우 여기에 위의 솔루션과 동일한 방식으로 실행되며 드라이버가 필요하지 않은 FireFox 솔루션이 있습니다. 현재 414 404 바이트 에서 1 바이트 더 깁니다 .

from selenium.webdriver import*;import time;D=Firefox();I=lambda k:D.find_element_by_name(k);C='comment';D.get('http://www.codegolf.stackexchange.com/users/login');I('email').send_keys(U);Z=I('password');Z.send_keys(P);Z.submit();D.get('http://www.codegolf.stackexchange.com/questions/84546');D.find_element_by_link_text('add a '+C).click();E=I(C);E.send_keys('1234567890123456');time.sleep(1);E.submit()

또한 함수가 필요한 경우 익명 람다 함수를 사용하는 솔루션이 있습니다. 현재 513 455에 있습니다. 497 489 477 449 431 바이트에 있고 Chrome을 브라우저로있습니다.

lambda U,P:exec("from selenium.webdriver import*;import time;D=Chrome();I=lambda k:D.find_element_by_name(k);C='comment';D.get('http://www.codegolf.stackexchange.com/users/login');I('email').send_keys(U);Z=I('password');Z.send_keys(P);Z.submit();D.get('http://www.codegolf.stackexchange.com/questions/84546');D.find_element_by_link_text('add a '+C).click();E=I(C);E.send_keys('1234567890123456');time.sleep(1);E.submit()",locals())

그러나 ChromeDriver와 관련된 문제가 다시있는 경우 여기에는 동일한 유형의 솔루션이 있지만 이번에는 Firefox를 사용하며 현재 442 432 바이트입니다 .

lambda U,P:exec("from selenium.webdriver import*;import time;D=Firefox();I=lambda k:D.find_element_by_name(k);C='comment';D.get('http://www.codegolf.stackexchange.com/users/login');I('email').send_keys(U);Z=I('password');Z.send_keys(P);Z.submit();D.get('http://www.codegolf.stackexchange.com/questions/84546');D.find_element_by_link_text('add a '+C).click();E=I(C);E.send_keys('1234567890123456');time.sleep(1);E.submit()",locals())

함수의 이름을 유효한 것으로 바꾸고 일반적인 함수처럼 전자 메일 및 암호로 호출하여 이러한 람다 함수를 호출합니다. 예를 들어, 함수의 이름이 H이면 다음과 같이 호출합니다 H(Email, Password).


Selenium Webdriver를 소개해 주셔서 감사합니다.
Maltysen

@Maltysen 문제 없습니다. :)
R. Kap

Chrome보다 짧 Firefox습니까?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ 글쎄, 나는 전에 Webdriver로 작업 할 수 없었습니다. 나는 마침내 가지고 있었고, 나의 해결책은 지금 11 바이트 더 짧다! : D
R. 캅

2

iOS의 Swift 2.2, 380 바이트

let r = NSMutableURLRequest(URL:NSURL(string:"http://codegolf.stackexchange.com/posts/84546/comments")!)
r.HTTPMethod = "POST"
r.HTTPBody = try!NSJSONSerialization.dataWithJSONObject(["comment":"1234567890123456","fkey":UIWebView().stringByEvaluatingJavaScriptFromString("localstorage.getItem('se:fkey')")!],options:[])
NSURLSession.sharedSession().dataTaskWithRequest(r).resume()

사용자가 Safari를 사용하여 Code Golf에 로그인하고 쿠키를 활성화했다고 가정합니다. 또한 UIKit을 내재적으로 가져 와서 사용할 수 있다고 가정합니다. JSON 직렬화는 Cocoa에서 매우 장황합니다 ... Swift 3 솔루션 및 선택적으로 macOS / Linux 테스트 가능 답변으로 업데이트 할 수 있습니다.


6
stringByEvaluatingJavaScriptFromString화려한
고양이

1

2
나 지금 화났어 난 Obejctive-C를 증오하는 것이 가능하다고 생각하지 않았다 ...
cat

0

Selenium Webdriver가 포함 된 Java 8, 684 바이트 :

import java.util.*;import org.openqa.selenium.*;import org.openqa.selenium.firefox.*;class Leave_a_Comment_PPCG_Challenge_Golfed_Version_1{static void Y(String U,String P){WebDriver D=new FirefoxDriver();D.get("http://www.codegolf.stackexchange.com/users/login");D.findElement(By.name("email")).sendKeys(U);WebElement Z=D.findElement(By.name("password"));Z.sendKeys(P);Z.submit();D.get("http://www.codegolf.stackexchange.com/questions/84546");D.findElement(By.linkText("add a comment")).click();WebElement V=D.findElement(By.name("comment"));V.sendKeys("1234567890123456");D.findElement(By.xpath("//input[@value='Add Comment']")).click();}public static void main(String[]a){Scanner I=new Scanner(System.in);Y(I.next(),I.next());}}

파이썬 에서 두 번째 전체 프로그램 답변의 Java 8에 직접 적응했습니다 . Firefox에서 완벽하게 작동하며 프로그램이 시작되면 즉시 공백으로 구분 된 이메일 및 비밀번호 입력을 요청합니다. 즉, 입력은 Email Password둘 사이에 공백이 필요한 형식입니다.


여기있는 코드가 684 이상입니다. haha
Poke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.