Заполните форму с помощью goutte/guzzle | симфония 4

Я пытаюсь создать приложение, которое очищает рекламу (например, аренда квартиры) и может создавать аналогичную рекламу одним щелчком мыши на внешнем веб-сайте. Очистка сделана, но я понятия не имею, как справиться с добавлением этого объявления. Авторизация довольно проста, поэтому я сделал ее сам, но я понятия не имею, как добраться до этой формы, потому что, прежде чем я смогу заполнить эту форму, мне нужно выбрать некоторые опции с помощью js-кнопок, как показано на гифке ниже.

Часть с авторизацией, логин.

$crawler = $client->request('GET', 'https://www.gumtree.pl/login.html');
        dump($crawler->html());
        $form = $crawler->filter("form")->form();
        $crawler = $client->submit($form, array(
            'email' => 'email',
            'password' => 'password'
        ));

Я не прикрепляю другую часть с формой, потому что она все равно не работает.

URL-адрес с формой: https://www.gumtree.pl/post.html

Как это выглядит: https://i.imgur.com/F00oLab.gifv

@изменить

Я сделал запрос через свой браузер, а затем попытался сделать тот же запрос через приложение Symfony, но он все еще не работает.

Мой хром запрос:

запрос

Моя попытка с symfony:

$res = $client->get('https://www.gumtree.pl/post.html', [
            'auth' => [
                'username',
                'password'
            ],
            'form_params' => [
                'locationId' => '3200025',
                'categoryId' => '9073',
                'machineId' => 'xxxx',
                'DwellingForSaleBy' => 'ownr',
                'DwellingType' => 'flat',
                'AreaInMeters' => '50',
                'NumberRooms' => '3',
                'NumberBathrooms' => '10',
                'Parking' => 'grage',
                'Title' => 'titleeeeeeeee',
                'Description' => '<p>test desc</p>',
                'priceTypes' => 'FIXED',
                'Price' => '459999',
                'currencyValues' => 'PLN',
                'UserName' => 'username',
                'Email' => 'email',
            ]
        ]);

но запрос в Symfony возвращает код 200, а должен возвращать 302.

дамп ответа:

ответ

Есть идеи, как с этим бороться?


person shaelex    schedule 08.02.2018    source источник
comment
Я не думаю, что он должен возвращать 302, так как это запрос ajax. Я думаю, что перенаправление обрабатывается javascript   -  person goto    schedule 15.02.2018


Ответы (1)


Страница, которую вы удаляете, заполнена ajax, я думаю, вам следует напрямую публиковать данные формы с помощью Guzzle http://docs.guzzlephp.org/en/stable/quickstart.html#post-form-requests

$response = $client->request('POST', 'https://www.gumtree.pl/post.html', [
    'form_params' => [
        'field_name' => 'abc',
        'other_field' => '123',
        'nested_field' => [
            'nested' => 'hello'
        ]
    ]
]);

введите здесь описание изображения

person goto    schedule 08.02.2018
comment
Я попробовал то, что вы предложили, но, похоже, у меня это не работает, отредактировал основной пост, проверьте, если возможно, спасибо :) - person shaelex; 15.02.2018