human2020 писал(а): ↑19 мар 2020, 00:38
Как перед navigate импортировать пачку куки для разных сайтов?
и как все полученые куки сохранить для дальнейшего использования?
для задания куков есть следующие функции:
set_cookie($cookie); - задать (добавить) куки для текущей страницы - работа с простыми куками.
set_cookie_for_url($url,$name,$cookie); - задать (добавить) куки для заданного сайта
на данный момент функция имеет следующие параметры:
$url,$name,$cookie,$expires="",$domain="",$path="",$httpOnly=false,$secure=false
пример вызова функции для вот такой вот куки:
/*
"domain": "www.google.com",
"expirationDate": "1584710586,58",
"hostOnly": false,
"httpOnly": false,
"name": "__utma",
"path": "/",
"sameSite": "unspecified",
"secure": false,
"session": false,
"storeId": "0",
"value": "123272373.426502259.12244752769.12244752769.12424752775.2:__utmb=173272373.4.10.1244752775"
*/
$browser->set_cookie_for_url("http://www.google.com/", "__utma","123272373.426502259.12244752769.12244752769.12424752775.2:__utmb=173272373.4.10.1244752775","1584710586,58","www.google.com", "/",false,false);
через функцию можно задавать и несколько кук:
// 5
echo "5. Зададим (Добавим) куки к гуглу : ";
$cookie ="__utma=123272373.426502259.12244752769.12244752769.12424752775.2:__utmb=173272373.4.10.1244752775; __utmz=173272373.1244752783.2.3.utmccn=(organic)|utmcsr=google|utmctr=adsense.google.com|utmcmd=organic; __utmc=173272373; __utmv=173272373.ExistingPublisher; PREF=ID=1ab1131528cb1f1a:TM=1244752750:LM=1244752750:S=z8a6mTRmDHVImKOg; TZ=-180; GMAIL_RTT=62; SID=DQAAAG4AAACVKgLK1udE8zJUkHfj7lB1exGg0rTbtWPXOIWORMueVZoT77XyJNTUltfGPonIuKt7PTVUs5qF-UvkhHR5cXcsIynN04AL3f7YMObLoOP5wkyGK9n7zHlw89Px0s8foYkobyH8Z9wzAZ2-FpZ7s9I3";
echo $browser->set_cookie_for_url("http://www.google.com/","",$cookie)."<br><br>";
функция
$browser->import_cookies, с помощью которой можно задать все куки сразу. Но установленные с помощью этой функции куки не всегда срабатывают так как это зависит в том числе и от сайта, есть куки которые привязаны к железу и они не работают при переносе с одного компа на другой.
Для сохранения куков используется функция
get_cookie_for_url – получить куки для заданного урла. Эта функция может получить как отдельно одну куки так и куки в виде json.
Пример:
// 2
echo "2. Получить заданные куки для заданного urla : ";
echo $browser->get_cookie_for_url("https://www.google.com/?gws_rd=ssl","NID")."\n";
// 4
echo "4. Получить заданные кук для заданного urla в виде JSON: ";
echo $browser->get_cookie_for_url("https://www.google.com/","",true)."\n";
// 4
echo "4. Получить заданные кук для заданного urla в виде JSON: ";
echo $browser->get_cookie_for_url("https://www.google.com/","NID",true)."\n";
результат:
2. Получить заданные куки для заданного urla : NID=200=T-qqr6F-Na1kVyTDZAKuaVk_HzIyOz18Ol_M8FNEzA_rX9pbqAhhpTitrttPz-zTnxoQvBFXAT9jGyh5ZBDpUwHTcx4aKxnliw5i0-Z98LN0HORxwXEV0QrmZHVkFVlsSHdYCn--YLX3bzFA5g1QeB_qfbPSsGLopjjkSWnMmdA
4. Получить заданные кук для заданного urla в виде JSON: [
{
"domain": "www.google.com",
"expirationDate": "1584710586,58",
"hostOnly": false,
"httpOnly": false,
"name": "__utma",
"path": "/",
"sameSite": "unspecified",
"secure": false,
"session": false,
"storeId": "0",
"value": "123272373.426502259.12244752769.12244752769.12424752775.2:__utmb=173272373.4.10.1244752775"
},
{
"domain": "www.google.com",
"expirationDate": "1584710586,583",
"hostOnly": false,
"httpOnly": false,
"name": "__utmz",
"path": "/",
"sameSite": "unspecified",
"secure": false,
"session": false,
"storeId": "1",
"value": "173272373.1244752783.2.3.utmccn=(organic)|utmcsr=google|utmctr=adsense.google.com|utmcmd=organic"
},
{
"domain": "www.google.com",
"expirationDate": "1584710586,583",
"hostOnly": false,
"httpOnly": false,
"name": "__utmc",
"path": "/",
"sameSite": "unspecified",
"secure": false,
"session": false,
"storeId": "2",
"value": "173272373"
},
{
"domain": "www.google.com",
"expirationDate": "1584710586,583",
"hostOnly": false,
"httpOnly": false,
"name": "__utmv",
"path": "/",
"sameSite": "unspecified",
"secure": false,
"session": false,
"storeId": "3",
"value": "173272373.ExistingPublisher"
},
и т.д.
]
4. Получить заданные кук для заданного urla в виде JSON: {
"domain": ".google.com",
"expirationDate": "1600424586,875",
"hostOnly": false,
"httpOnly": true,
"name": "NID",
"path": "/",
"sameSite": "unspecified",
"secure": true,
"session": false,
"storeId": "0",
"value": "200=T-qqr6F-Na1kVyTDZAKuaVk_HzIyOz18Ol_M8FNEzA_rX9pbqAhhpTitrttPz-zTnxoQvBFXAT9jGyh5ZBDpUwHTcx4aKxnliw5i0-Z98LN0HORxwXEV0QrmZHVkFVlsSHdYCn--YLX3bzFA5g1QeB_qfbPSsGLopjjkSWnMmdA"
}
Для того что сохранить куки для дальнейшего использования можно использовать функцию
browser->set_cookies_folder("путь к папке");
Логика тут проста к примеру:
// получить порт на котором работает скрипт
$app_port=$app->get_port();
// путь к папке с куками
$cookies_path1 = "C:\\XWeb Studio\\Human Emulator Studio\\$app_port\\cookies\\test_cookies_folder1";
// Зададим папку куков
$browser->set_cookies_folder($cookies_path1);
// далее тут делаем импорт кук.
// работаем сайтом.
// таким образом куки будут сохраняться в этой папке
// далее уже не используем импорт, а просто подключаем эту папку перед навигацией.