Почему этот код Kotlin ведет себя иначе, чем этот код Python? - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь создать сканер веб-сайта. Для этого мне нужно получить файл cookie для входа в систему.

Я написал этот код Python, который получает файл cookie для меня:

#!/usr/bin/python
import requests
import sys
from getpass import getpass

uname = sys.argv[1]
passw = getpass()

login = {"values[login]": uname, "values[password]": passw}

r = requests.post("https://redacted.com/signin/", data=login)

jar = r.history[0].cookies

token = jar['redacted-token']

with open("token", mode='w') as token_file:
    token_file.write(token)

Этот код выполняет запрос с библиотекой запросов python.

Этот код написан на Kotlin и должен выполнять ту же цель:

import org.apache.http.NameValuePair
import org.apache.http.client.CookieStore
import org.apache.http.client.entity.UrlEncodedFormEntity
import org.apache.http.client.methods.HttpPost
import org.apache.http.client.protocol.HttpClientContext
import org.apache.http.impl.client.HttpClients
import org.apache.http.message.BasicNameValuePair
import org.apache.http.util.EntityUtils

fun login(username: String, password: String, cookieStore: CookieStore) {
    //Initialize http client
    var httpclient = HttpClients.createDefault()

    //Initialize http context
    var context = HttpClientContext.create()
    context.cookieStore = cookieStore

    //Initialize Form
    var formParams = arrayListOf<NameValuePair>()
    formParams.add(BasicNameValuePair("values[login]", username))
    formParams.add(BasicNameValuePair("values[password]", password))
    var formEntity = UrlEncodedFormEntity(formParams)

    //Initialize request
    var httppost = HttpPost("https://redacted.com/signin/")
    httppost.entity = formEntity //With form


    var response = httpclient.execute(httppost, context)


    print(EntityUtils.toString(httppost.entity))
    print(EntityUtils.toString(response.entity))

}

В ответе от сервера говорится, что пароль и имя пользователя неверны.

Iя не совсем понимаю, как этот код должен вести себя по-другому.

Может кто-нибудь помочь мне исправить мой код Kotlin?

...