2pa: если честно, я все еще не понимаю в чем проблема у вас. Но на всякий случай поправьте еще тут if((($(window).scrollTop() + $(window).height()) >= $(document).height()) && !inProcess)
Денис Инешин: еще раз - кнопку можно зажать не только кликом мыши. Можно перейти на кнопку tab'ом, нажать кнопку на клавиатуре и держать - в итоге html-кнопка будет тоже зажата, но к mousedown и mouseup это отношения не имеет.
Дмитрий Морозов: вот именно отсюда https://www.emex.ru/Find2/Find/FindByDetailNum их js аяксом подтягивает данные. Если есть вариант напрямую обращаться сюда, то нет надобности рендерить всю страницу фантомом. Приведенный выше код у меня уже сработал и вернул данные, то есть это не просто догадка. Если данных там не хватает, то надо продолжать разбираться с фантомом, но тут я уже вам не помощник - надо смотреть исходники.
Дмитрий Морозов: Есть еще вариант прямого обращения к https://www.emex.ru/Find2/Find/FindByDetailNum с передачей POSTом данных, на выходе получите чистый json со всей нужной информацией. Я за 5 минут на коленке проверил в php+curl:
$url = 'https://www.emex.ru/Find2/Find/FindByDetailNum';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "detailNum=NPLPO3135&loadingGroupId=-2807&packetId=-1&locationId=19165&deliveryType=&isFirstLoading=true&performanceLogSessionId=31e620f5-0881-4d7a-a525-7480d1a6e56d&latitude=55.888755&longitude=37.430337&__RequestVerificationToken:Lj-osQ6yqY56ce_nckf-1GDRuy1oB4P6uN4PYw1GdPKV462BowmomZQVLXSePDfMwLdbzm6pBR2yJ9T-C85ci3GyDBtF_KyaSGAjPa74HomqkT9YEIjsB3jXWvJLrcLL9dhBonxJVnwYokXLc5tHgQ2");
И получил полноценный json в ответе. Конечно же token надо понять как генерировать и про куки в итоге не забыть, но даже приведенный выше код уже делает свою работу.
Дмитрий Морозов: к сожалению, мне сложно вот так определить в чем именно у вас там загвоздка. Попробуйте для начала поступить проще - зайдите по урлу, заберите значения этих кук, что выдаст emex. Дальше добавляйте к ним еще и isBestLocationDetected=true и делайте еще один запрос на тот же урл с того же ip (через тот же прокси, что и до этого).
Дмитрий Морозов: да, все верно вы определили. Там дважды закодированная строка. Вам надо дважды сделать с json-строкой encodeURI и итоговое значение положить в куку.
Дмитрий Морозов: в Хроме посмотрите какое значение вам выставится для best-location, current-location и current-region-long-lat. Потом перед заходом по URL удалите эти куки, если они есть, и выставьте свои куки, чтобы в итоге не было дублирования. Всего перед заходом по адресу должно быть установлено 4 куки.
Дмитрий Морозов: Берем Chrome. Открываем вашу ссылку. Удаляем все куки для домена exex.ru и при обновлении страницы получаем список производителей. Открываем консоль и пишем document.cookie="isBestLocationDetected=true". Жмем F5 и видим уже нужную страницу. Если уже здесь удалить этут куку и обновить страницу, то снова увидим список производителей. У меня именно так это и сработало.
thorii: Рад помочь. Подобные сомнения возникают у всех, это нормально. Просто всегда всё зависит от задачи и реалий. Если со временем ваш код разрастется и вы увидите. что все эти куски кода можно реально объединить в один метод/функцию без каких-то лютых костылей и быстро, то вот тогда и займетесь рефакторингом.