Как быть распознанным как подключенный при использовании file_get_contents (<url>), где <url>обращается к сайту, где я уже подключен через мой браузер? - PullRequest
0 голосов
/ 22 января 2020

КОНТЕКСТ:
На внешнем сайте, где у меня есть собственная учетная запись, я всегда могу войти как обычно.
Я хочу автоматизировать опрос о некоторых данных на этом сайте.
Поэтому мне пришлось программно загрузить соответствующую страницу, и я хотел бы использовать javascript для поиска интересных данных.

ПРОБЛЕМА 1 (решена):
Но если я просто загружаю страницу в iframe (или во всплывающем окне), это приводит к междоменной проблеме, и я не могу получить доступ к содержимому страницы .
Это нормально, поэтому я работал с хорошо известным решением: используйте PHP file_get_contents(), чтобы загрузить код HTML в виде строки, где я могу искать все, что захочу.
Это что я уже успешно использую с одним сайтом.

ПРОБЛЕМА 2:
Теперь я хочу сделать то же самое, в тех же условиях, на другом сайте.
Но этот возвращает свою страницу подключения скорее, страницу, которую я спросил!
Очевидно, что при поступлении вызова с file_get_contents() сайт видит меня как не связанного, в то время как он видит меня подключенным, когда я напрямую вызываю страницу с помощью своего браузера.

Так как Могу ли я быть замечен как подключенный?
Кстати, я не понимаю, что вызывает разное поведение между двумя сайтами.
Когда он работал нормально, я думал, что он узнал меня по моему IP; и что, когда это не так?

Я пытался вызвать страницу с помощью антиквариата https://myIdent:myPassword@theSite..., но она не работает лучше.
Я также подумал, что могу программным способом войти в диалог, но мне интересно, как на самом деле это сделать.

Есть ли способ решить это?

1 Ответ

0 голосов
/ 22 января 2020

Кстати, я не понимаю, что вызывает разное поведение между двумя сайтами. Когда все заработало, я подумал, что узнал меня по IP; ну и что, когда это не так?

Он не распознает вас по вашему IP, он распознает вас по сеансу, который принадлежит исключительно приложению браузера. Т.е. вы входите в систему через браузер, удаленный сайт дает браузеру сессионный повар ie, и при каждом последующем запросе браузер возвращает повар ie обратно на удаленный сайт, чтобы доказать, что он вошел в систему. Ваши вызовы file_get_contents() действительно имеют доступ к этому повару ie, и поэтому обрабатываются как не вошедшие в систему.

Вы можете (возможно) выполнить sh то, что хотите, используя curl с банкой повара ie и выполнением двух запросов - одно попадание на страницу входа с вашими учетными данными (которое предоставляет повара ie, который вы храните в банке), а затем второе попадание на страницу, которую вы хотите очистить (который предлагает содержимое повара ie jar.) См. curl_setopt () для параметров CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE.

По сути, вы хотите создать скручиваемое соединение и cookiejar, и cookiefile, указывающие на один и тот же файл. Таким образом, все полученные вами файлы cookie будут сохранены, а любые последующие запросы будут предлагать сохраненные файлы cookie.

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

...