Быстрое добавление статьи в админку Wordpress используя подмену POST данных на лету $raw->set_hook_on_begin_transaction

Все вопросы касающиеся использования
программы можно задать здесь
Ответить
alpha666
Сообщения: 50
Зарегистрирован: 03 фев 2017, 07:04
Контактная информация:

Быстрое добавление статьи в админку Wordpress используя подмену POST данных на лету $raw->set_hook_on_begin_transaction

Сообщение alpha666 » 18 дек 2020, 14:00

Здравствуйте!
Возник вопрос по использованию программы, доходчивой документации по теме найти не смог.

Задача следующая:
Скрипт заходит на страницу добавления записи в админке, далее подгружается хук, который подменивает на лету массив POST с данными о самой статье, и далее скрипт нажимает на кнопку Publish и собственно передает обработчику наши подмененные данные.

При создания статьи после нажатия на клавишу отправки Publish вижу следующие RAW логи (урезанная версия):
11:53:54 need load request: POST : http://localhost/worker/wp-json/wp/v2/p ... ocale=user
11:53:54 Post Datas: {"id":85,"featured_media":82,"status":"publish","title":"Hello World!", "content":"Just a test..\n"}

Будьте столь любезны, подскажите как это сделать?

P.S.
Вариант с $browser->send_post_query() не подойдет, т.к. в процессе отправки статьи через админку помимо POST данных передаются данные подтверждающие факт авторизации и публикации от имени адмиина, подделать которые будет весьма проблематично.
Последний раз редактировалось alpha666 18 дек 2020, 19:59, всего редактировалось 5 раз.
Программист извращенец из Киева - alphagoblin4@gmail.com

alpha666
Сообщения: 50
Зарегистрирован: 03 фев 2017, 07:04
Контактная информация:

Re: Добавление статьи в админке Wordpress используя объект $raw

Сообщение alpha666 » 18 дек 2020, 15:01

Попробовал разобраться в исходниках TestSamples. Получилось такое вот, однако при выполнении скрипта хуман намертво подвисает где то на этапе между созданием файла begin_transaction_hook2.out2_1 и begin_transaction_hook2.in2_1

Код скрипта (привожу весь код целиком):
<?php

$xhe_host = "127.0.0.1:7017";

// The following code is required to properly run XWeb Human Emulator
require("C:/XWeb/Human Emulator Studio 7.0.56/Templates/xweb_human_emulator.php");
$bUTF8Ver=true;

$browser->navigate('about:blank');
$app->clear();

$browser->navigate('http://localhost/worker/wp-admin/');

$input->get_by_number(0)->send_input('test');
$input->get_by_number(1)->send_input('123456');
$button->get_by_number(0)->click();

$raw->enable_all_streams();

$browser->navigate('http://localhost/worker/wp-admin/post-new.php');
$browser->wait();
$browser->wait_js();

$textarea->get_by_id("post-title-0", false)->send_input("abc");
$browser->wait();
$browser->wait_js();

$keyboard->send_key(VK_TAB);
$browser->wait();
$browser->wait_js();

$p->get_by_number(0)->send_input('Hello World!');
$browser->wait();
$browser->wait_js();

$raw->set_hook_on_begin_transaction("Hooks/begin_transaction_hook2.php");
$browser->wait();
$browser->wait_js();

$btn->get_by_inner_text("Publish", false)->click();
$browser->wait();

$btn->get_by_number(13)->event("onclick");
$browser->wait();

$header = $raw->get_last_request_header();
$browser->wait();
$browser->wait_js();

$postData = $raw->get_last_request_post_datas();
$browser->wait();
$browser->wait_js();

$requestUrl = $raw->get_last_request_url();
$browser->wait();
$browser->wait_js();

echo "Header \/..\n";
var_dump($header);

echo "\n\nPOST Data \/ ..\n";
var_dump($postData);

echo "\n\nRequest url \/ ..\n";
var_dump($requestUrl);

$raw->enable_all_streams(false);
$browser->wait();
$browser->wait_js();
		
$app->quit();
?>
Код хука:
<?php
	$num=$argv[1];
	
	$data_input = [
                        'id' => 85,
                        'featured_media' => 82,
 			'type' => 'post',
			'format' => 'standard',
			'title' => 'Hello World!',
			'content' => 'Just a test...',
			'status' => 'published'
	];
	
	$request_data = file("begin_transaction_hook2.in2_" . $num);

	$Handle = fopen("begin_transaction_hook2.out2_" . $num, 'w');

	fwrite($Handle, json_encode($data_input));
	
	fclose($Handle);


Лог begin_transaction_hook2.out2_1:
{"id":85,"featured_media":82,"type":"post","format":"standard","title":"Hello World!","content":"Just a test...","status":"published"}

Содержимое begin_transaction_hook2.out2_1
-POST DATAS-

Содержимое begin_transaction_hook2.in2_1
http://localhost/worker/wp-admin/admin-ajax.php

Содержимое begin_transaction_hook2.in_1
Host:localhost
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 /60.0
Accept:*/*
Accept-Language:en-US,en;q=0.5
Accept-Encoding:gzip, deflate
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With:XMLHttpRequest
Referer:http://localhost/worker/wp-admin/post-new.php
Content-Length:171
Cookie:wordpress_ee7a201270830abd9d7cec67770115eb=test%7C1608482702%7CGIDZPHu2pD8chiXVlrdBo3YMM7EpigrHkasmsJHnRAY%7C49e0022f4c013dd1d09eb1a0d1326b58be04deefadaef5a799109dca7628f44f; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_ee7a201270830abd9d7cec67770115eb=test%7C1608482702%7CGIDZPHu2pD8chiXVlrdBo3YMM7EpigrHkasmsJHnRAY%7C531ed69f5ad3d7216bc0a790797f0a59412935ba6f4699f0b57fbcb8d27bddd6; wp-settings-2=libraryContent%3Dbrowse; wp-settings-time-2=1608309903
DNT:1
Программист извращенец из Киева - alphagoblin4@gmail.com

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Быстрое добавление статьи в админку Wordpress используя подмену POST данных на лету $raw->set_hook_on_begin_transact

Сообщение bigfozzy » 19 дек 2020, 01:24

Попробуем разобраться с этим в ближайшее время.

Ответить