Очистка ASPX после входа в систему с помощью Python, но каждый вход дает вам другой URL-адрес - PullRequest
0 голосов
/ 01 августа 2020

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

Обычно вы можете отправить URL-адрес POST (www.example.com/login.aspx) с помощью входа в систему информации и ПОЛУЧИТЬ фиксированный URL-адрес после входа в систему (www.example.com/home.aspx).

Но страница, которую я пытаюсь получить, имеет другой URL-адрес для каждого номера ролика. поступил. URL-адрес страницы входа выглядит следующим образом: «www.example.com/View.aspx». После входа в систему URL-адрес страницы результатов будет выглядеть так: «www.example.com/ovengine.aspx?enc=BunchOfNumbersandAlphabets». И эти числа и алфавиты разные для каждого номера рулона.

Поэтому я не могу поместить URL-адрес в свой код, чтобы получить окончательный результат. Я не знаю, как получить страницу, которая появляется автоматически после входа в систему, без упоминания ее URL.

1 Ответ

0 голосов
/ 03 августа 2020

Но страница, которую я пытаюсь получить, имеет разные URL для каждого номера ролика. введено

Нет, это тот же URL, и этот URL имеет параметр. Вы все время видите это в URL-адресах.

Итак, для сайта температуры это может выглядеть как

www.TheWeatherSite.com/?City=Rome

Итак, приведенное выше URL всегда один и тот же, но параметр «город» веб-сайта предназначен для города Рима. Таким образом, веб-код, находящийся позади, может использовать / получить / захватить / использовать этот параметр в коде позади. Таким образом, мы не создаем веб-страницу для КАЖДОЙ погоды для каждого города.

, поэтому вы создаете ОДНУ страницу, а затем и затем ПЕРЕДАЕТЕ веб-странице значение города, которое код позади может использовать и использовать. (скажем, запросите данные о температуре из базы данных для города = указанное выше значение).

Таким образом, вы должны заранее знать, в каком городе вы хотите погоду. Конечно, этот подход великолепен, поскольку вам не нужно создавать новую страницу веб-сайта, чтобы просто отображать / отображать погоду в данном городе.

Фактически вы передаете значение некоторому коду, который будет run и используйте это переданное значение.

То же самое и для вашего примера URL. Вы заметили, что есть ОДИН параметр, называемый «en c».

Итак, код веб-сайта будет:

Захватите, получите, установите идентификатор пользователя. Однако идентификатор пользователя может быть получен от системы безопасности и поставщика аутентификации. Если вы не вошли в систему как этот конкретный пользователь, вы не получите этот идентификатор пользователя.

Итак, оба идентификатора пользователя (ограничены внутренним кодом). И значение "en c" в качестве параметра в имеющемся URL-адресе будет обязательным.

Итак, обратите внимание на sql выше, нам ОЧЕНЬ, вероятно, понадобится и studentID, и ТАКЖЕ "en *" 1078 * "значение, которое какой-то ДРУГОЙ код с другой страницы получает / берет из базы данных.

Теперь этот забавный« GUID »(пожалуйста, узнайте в Google, что такое GUID), с точки зрения программиста, БУДЕТ достаточно, чтобы вытащить эту одну строку данных из базы данных, но ТАКЖЕ с использованием в запросе пользователей, вошедших по внутреннему идентификатору?

Ну, тогда только данный вошедший в систему пользователь сможет увидеть свой собственный набор значений, которые принадлежат им.

Другими словами?

Только пьяный неработающий клоун Родео ТОЛЬКО потребует этот GUID для извлечения этих данных. Если бы это было так, то любой пользователь мог бы ввести этот GUID и увидеть отметки других людей. Однако существует "некоторая" безопасность при использовании GUID, поскольку пользователь никогда не сможет угадать это значение.

Если они использовали «город», как мой первый пример URL и параметра? Тогда да, вы можете угадать и узнать значение города, которое нужно ввести. Или они могли бы использовать имя студента или даже номер студента - те, которые вы МОЖЕТЕ угадать с относительной легкостью.

Но для таких данных нет сомневаюсь, что пользователь принял что-то НАМНОГО сложнее, чем начальный номер, такой как номер строки или идентификатор PK из базы данных. Итак, когда код добавил результаты в эту таблицу? Они также добавили GUID некоторого типа и также сохранили его как строку в базе данных.

Таким образом, вам НЕ нужен ТОЛЬКО GUID, но этот URL-адрес будет работать ТОЛЬКО для данной пары значений. (Идентификатор студента - ТОЛЬКО внутренний по отношению к коду и получен ОТ аутентифицированного провайдера. Это была эта строка кода:

= Membership.GetUser.ProviderUserKey

Таким образом, указанное выше значение будет внутренним идентификатором входа пользователя в систему.

en c (внешнее) выставленное значение в веб-URL в качестве параметра, а ТАКЖЕ внутреннее значение входа в систему. Таким образом, код позади (asp. net) будет выглядеть примерно так:

    Dim strSQL As String
    strSQL = "SELECT * from tblStudentMarks where StudentID = @pID " &
             " AND TestResultsGID = @GID"

    Dim cmdSQL As New SqlCommand(strSQL, GetCon)

    cmdSQL.Parameters.Add("@pID", SqlDbType.Int).Value = Membership.GetUser.ProviderUserKey
    cmdSQL.Parameters.Add("@GID", SqlDbType.VarChar).Value = Request.QueryString("enc")
    Dim dReader As New SqlDataAdapter(cmdSQL)

    Dim rstData As DataTable
    dReader.Fill(rstData)

Обратите внимание на код:

Request.QueryString("enc")

Это позволяет коду получить / захватить параметр (en c) из URL-адреса. Но, как я уже сказал, это очень маловероятно, что здесь требуется ТОЛЬКО число "en c". Возможно, ТОЛЬКО это значение требуется для извлечения данных из строки, но тогда это будет дыра в безопасности размером с открытую дверь сарая.

Подумайте о своем онлайн-банке.

www.mybank.com/?CustomerNumber=1234

Что ж, если мы ПРОСТО используем указанный выше CustomerNumber как средство для получения банковских данных, тогда я мог бы go на сайт и ввести ВАШ номер или чей-то еще номер.

Итак, для этого работать? Вам нужно будет получить список значений en c (эта беспорядочная забавная длинная строка). Без этого параметра вы не сможете установить параметр в URL-адресе.

Однако, как я уже сказал, вам ТАКЖЕ, скорее всего, понадобится некоторый внутренний «пользовательский» идентификатор входа, который НЕ включен в publi c открытый URL, чтобы ТАКЖЕ получить эту строку данных из базы данных.

И, что еще важнее? Такие веб-страницы обычно не могут быть открыты, ЕСЛИ вы не вошли в систему как аутентифицированный пользователь. Другими словами, эта веб-страница будет доступна ТОЛЬКО для зарегистрированных пользователей - если вы не вошли в систему, безопасность сервера будет c НЕ отключать sh веб-страницу, если вы не вошли в систему как пользователь.

Итак, чтобы это сработало, вам нужно связаться с разработчиками веб-сайта и получить список значений "en c". Когда у вас есть этот список, вы можете сгенерировать некоторый код для обработки этого списка и вставить правильный параметр в URL-адрес. Однако вам также необходимо спросить, будут ли этот URL-адрес и значение параметра работать ТОЛЬКО для вас, зарегистрированного пользователя, или этот URL-адрес и параметр работают ТОЛЬКО для данного зарегистрированного пользователя. Без этих значений и без знания того, будут ли URL и параметр работать для любого пользователя? (в чем я сомневаюсь), тогда просто использование URL-адреса для получения этих значений не сработает.

Было бы даже ЛУЧШЕ, если бы люди с веб-сайта создали веб-службу, которую вы можете вызвать одной командой он в любом случае вернет все нужные вам данные, вместо того, чтобы снова и снова отправлять значение «en c», которого у вас в любом случае нет.

...