1

Javaを介してラベルを編集するためにウィキデータにリクエストを行っていました。以下では、Jsoup を使用してリクエストを行いました。

Response res = (Response) Jsoup.connect("https://www.wikidata.org/w/index.php?title=Special:UserLogin&returnto=Wikidata%3AMain+Page")
        .method(Method.POST)
        .timeout(10000)
        .execute();

この応答を介して取得された Cookie は、API を介して wiki にログインする際に使用されます (エンティティのラベルを変更するために必要な csrf トークンを取得するため)。

まず、ログイン トークンが生成されました。

String url = "https://www.wikidata.org/w/api.php?action=query&format=xml&meta=tokens&type=login";

org.jsoup.nodes.Document loginData =  Jsoup.connect(url)
        .data("action","query")
        .data("format","xml","meta","tokens","type","login")
        .cookies(res.cookies())
        .get();

そしたらログインできた

 org.jsoup.nodes.Document loginData1 =  Jsoup.connect(url)
        .data("action","login")   
        .data("format","xml","lgname",username,"lgpassword",password,"lgtoken",loginToken)
        .cookies(res.cookies())
        .post();

ログインは成功しました。

csrfトークンを取得するために

loginData =  Jsoup.connect(url)
        .data("action","query")
        .data("format","xml","meta","tokens","type","csrf")
        .cookies(res.cookies())
        .get();

ここで csrf トークンは次のように生成されます: +\

しかし、なぜそのような無効なトークンが生成されるのかログインしているので、Java プログラムでラベルを設定できませんでした。正しい方法は何ですか?

4

0 に答える 0