Обход ограничений поисковой выдачи VK

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Если есть знатоки ВКонтакте, подскажите пожалуйста такой момент. Я создаю шаблон, который собирает id всех пользователей, найденных в поиске. Т.е. хочу, чтобы обходилось ограничение выдачи в поиске (1000 человек). Делаю это путём указания даты рождения. К примеру, вот такие параметры поиска https://vk.com/search?c[per_page]=40&c[q]=Алкаш&c[section]=people - найдено 2197 человек. Но если указать День рождения один за одним, каждый из 31 дня, то в сумме получается 1230 человек. Как так? Вроде ж невозможно в ВК не указывать дату рождения? Может ещё какой-то способ есть обхода ограничения выдачи?
Собираете через post\get запросы или каким-то другим способом? Если через них, тогда получили временное ограничение на парсинг от вк. Если через песочницу - тоже ограничение получили. Если через веб-версию - значит неправильно парсите, потому что там по 40 id отдает, нужно подгружать страницу , чтобы получить остальные id. Если прошли 365 дней по 40 id, вот примерно 1200 и получили. Причем подгружать страницу надо тоже не до конца (хотя раньше можно было, сейчас уже так нельзя), а по кусочкам, и парсить каждый кусочек. Это долго и нудно, понимаю. Но иногда проще подождать 10-12 часов (например поставить на ночь) и спарсить себе id на 1-2 недели работы.

А делать базу из всех id вк или брать чужие базы, не очень эффективно, данные меняются постоянно, базу поддерживать надо. Ну и скачать такую базу в современных реалиях очень непросто, без временно или постоянного бана.
 

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43
Собираете через post\get запросы или каким-то другим способом? Если через них, тогда получили временное ограничение на парсинг от вк. Если через песочницу - тоже ограничение получили. Если через веб-версию - значит неправильно парсите, потому что там по 40 id отдает, нужно подгружать страницу , чтобы получить остальные id. Если прошли 365 дней по 40 id, вот примерно 1200 и получили. Причем подгружать страницу надо тоже не до конца (хотя раньше можно было, сейчас уже так нельзя), а по кусочкам, и парсить каждый кусочек. Это долго и нудно, понимаю. Но иногда проще подождать 10-12 часов (например поставить на ночь) и спарсить себе id на 1-2 недели работы.
Ни то, и ни другое. Я знаю что есть ограничения при частых запросах. Делал обманку - с разных ip и разных аккаунтов запрашивал, и с большой паузой - бесполезно.
А ещё меня поражает такая ситуация. Допустим, при запросе поиска людей по API найдено 100500 аккаунтов. И, казалось бы, в ответе на мой запрос должно придти 1000 человек, но нет! Приходит всегда меньше! Хотя в параметрах я указал count=1000
 

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43
Или вот ещё ситуация. Делаю обычный запрос в ВК: https://vk.com/search?c[city]=27&c[country]=1&c[per_page]=40&c[q]=робот&c[section]=people - находится 2 человека. А если делаю запрос по API с идентичными параметрами, то находится 1 человек! Как блин так-то? Точнее, находится тоже 2, даже в ответе написано "count": 2, но данные только от одного человека:
Код:
{
"response": {
"count": 2,
"items": [{
"id": 495657165,
"first_name": "Робот",
"last_name": "Пузо",
"is_closed": false,
"can_access_closed": true,
"track_code": "d68be0e3lVYfR1NX2o1S6-4PLh0Kh-RpmhEl3Y1olVRqAYBKtY_yPw5CCTuI0FPp29ql68CAjGecEiXd"
}]
}
}
 

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Ни то, и ни другое. Я знаю что есть ограничения при частых запросах. Делал обманку - с разных ip и разных аккаунтов запрашивал, и с большой паузой - бесполезно.
А ещё меня поражает такая ситуация. Допустим, при запросе поиска людей по API найдено 100500 аккаунтов. И, казалось бы, в ответе на мой запрос должно придти 1000 человек, но нет! Приходит всегда меньше! Хотя в параметрах я указал count=1000
Через api придет 1000 (иногда 999 или 998 ). Паузы помогают, но они должны быть не по 3 секунды. Ну и всё зависит конечно от того сколько нужно спарсить. Если 100 тысяч человек, перебором по дням рождения на 365 запросов, это одно время. А если те же 100 тысяч человек но по возрасту от 18 до 22 лет, перебором по тем же дням рождения, это уже около 1500 запросов, и паузы нужны совсем другие. Поэтому лучше делать разбивку, чтобы умещалось всё в запросы месяцев рождения, их всего 12. Через тот же execute можно передать сразу 25 запросов. Поэтому я сторонник разбивки поиска на небольшие группы по 8-10 тысяч человек и сбор этих людей через месяцы рождения.
 

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Или вот ещё ситуация. Делаю обычный запрос в ВК: https://vk.com/search?c[city]=27&c[country]=1&c[per_page]=40&c[q]=робот&c[section]=people - находится 2 человека. А если делаю запрос по API с идентичными параметрами, то находится 1 человек! Как блин так-то? Точнее, находится тоже 2, даже в ответе написано "count": 2, но данные только от одного человека:
Код:
{
"response": {
"count": 2,
"items": [{
"id": 495657165,
"first_name": "Робот",
"last_name": "Пузо",
"is_closed": false,
"can_access_closed": true,
"track_code": "d68be0e3lVYfR1NX2o1S6-4PLh0Kh-RpmhEl3Y1olVRqAYBKtY_yPw5CCTuI0FPp29ql68CAjGecEiXd"
}]
}
}
Глубоко не копался в вашем варианте, но такие id невидимки есть. На прошлой неделе пришлось неплохо так покопаться в одном своём шаблоне, чтобы найти подобного товарища.
 

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Или вот ещё ситуация. Делаю обычный запрос в ВК: https://vk.com/search?c[city]=27&c[country]=1&c[per_page]=40&c[q]=робот&c[section]=people - находится 2 человека. А если делаю запрос по API с идентичными параметрами, то находится 1 человек! Как блин так-то? Точнее, находится тоже 2, даже в ответе написано "count": 2, но данные только от одного человека:
Код:
{
"response": {
"count": 2,
"items": [{
"id": 495657165,
"first_name": "Робот",
"last_name": "Пузо",
"is_closed": false,
"can_access_closed": true,
"track_code": "d68be0e3lVYfR1NX2o1S6-4PLh0Kh-RpmhEl3Y1olVRqAYBKtY_yPw5CCTuI0FPp29ql68CAjGecEiXd"
}]
}
}
Проверил ради интереса ваш запрос, это не та ситуация, которая была у меня. У вас не показывается, потому что давно была последняя активность (в 2013 году последний раз). Вк по этому методу не показывает тех кто был последний раз онлайн несколько лет назад. Можете легко это проверить по любому другому запросу, если не ставить галочку онлайн. Выберите какой нибудь небольшой город, поставьте параметры например возраст от 20 до 20 лет, есть фото, не онлайн, и чтобы было человек 500 в выдаче вк. Потом вставьте те же параметры в песочнице users.search и увидите, что выдаст человек 350-400. Остальные 100 давно не были онлайн. Это не забаненные пользователи, не собачки, не закрытые профили.

И для теста можете выставить те же параметры, но выбрать тех кто онлайн. У вас количество будет совпадать почти 1 в 1. Ну и если интересно, можете найти те 100 недостающих id и проверить сами через метод messages.getLastActivity , когда они были последний раз. Окажется, что примерно в 2011-2015 году. Вк сейчас считает таких людей потенциально умершими, но забанить без свидетельства о смерти от родственников он не может никого, так как нет причин.
 
  • Спасибо
Реакции: socsecret.ru

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43
Любопытная теория, буду проверять.
 

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Любопытная теория, буду проверять.
Я не нашел опровержений, когда делал тестовые проверки. Но может что-то уже поменялось, хотя я тогда около 100 аккаунтов таких нашел и проверил. Оно даже к лучшему, что при парсинге эти пользователи не попадают в результаты, толку от них всё равно никакого
 
  • Спасибо
Реакции: socsecret.ru

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43
Я не нашел опровержений, когда делал тестовые проверки. Но может что-то уже поменялось, хотя я тогда около 100 аккаунтов таких нашел и проверил. Оно даже к лучшему, что при парсинге эти пользователи не попадают в результаты, толку от них всё равно никакого
Да, проверил сейчас - так оно и есть. Единственное что на данный момент не пойму, так это почему в ответе при запросе по API может быть написано "count":2, но приходят данные только 1 человека, и в обычном поиске на сайте тоже только 1 человек... Откуда тогда в счётчике взялась цифра 2?

И ещё вопрос: есть ли какой-то бан, или ограничение выдачи при запросе по API?
 
Последнее редактирование:

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Да, проверил сейчас - так оно и есть. Единственное что на данный момент не пойму, так это почему в ответе при запросе по API может быть написано "count":2, но приходят данные только 1 человека, и в обычном поиске на сайте тоже только 1 человек... Откуда тогда в счётчике взялась цифра 2?

И ещё вопрос: есть ли какой-то бан, или ограничение выдачи при запросе по API?
Нужен пример, чтобы я точнее мог сказать.
При парсинге по api через метод users.search попадают в результаты все собачки, Deleted аккаунты, blocked аккаунты, но не попадают id с давней активностью. При этом в количестве они все учитываются.

В поиск через веб-версию попадают все аккаунты с давней активностью, но не попадают deleted и blocked аккаунты, при этом в количестве учитываются аккаунты с давней активностью.

В поиске через песочницу (dev) результаты аналогичны api.

Временный бан накладывается во всех трёх способах парсинга.
 

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Да, проверил сейчас - так оно и есть. Единственное что на данный момент не пойму, так это почему в ответе при запросе по API может быть написано "count":2, но приходят данные только 1 человека, и в обычном поиске на сайте тоже только 1 человек... Откуда тогда в счётчике взялась цифра 2?

И ещё вопрос: есть ли какой-то бан, или ограничение выдачи при запросе по API?
Записал небольшое видео
 

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43
Записал небольшое видео
Подскажите по ограничениям запросов. В АПИ ВК пишут, что не чаще 3 раз в секунду можно делать запросы, а у вас стоит пауза аж 2 секунды... Зачем такая большая пауза?
 

stmult

Client
Регистрация
19.11.2013
Сообщения
96
Благодарностей
37
Баллы
18
Подскажите по ограничениям запросов. В АПИ ВК пишут, что не чаще 3 раз в секунду можно делать запросы, а у вас стоит пауза аж 2 секунды... Зачем такая большая пауза?
Потому что это особый метод, при котором очень быстро можно получить временный бан. Для большинства остальных методов действительно можно делать 3 запроса в секунду.
 

socsecret.ru

Client
Регистрация
30.09.2017
Сообщения
346
Благодарностей
209
Баллы
43

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
418
Благодарностей
156
Баллы
43
Специалисты по ВК прошу вашей помощи :ah:
Как можно парсить сообщения (с групп, у пользователей) по ключевым словам? Например за сутки.
 

Spikers07

Client
Регистрация
25.05.2016
Сообщения
123
Благодарностей
54
Баллы
28
Специалисты по ВК прошу вашей помощи :ah:
Как можно парсить сообщения (с групп, у пользователей) по ключевым словам? Например за сутки.
Если верно я понял (посты с групп/пользователей)

https://api.vk.com/method/wall.search?access_token={-Variable.token-}&owner_id={-Variable.id-}&query={-Variable.key-}&owners_only=0&count={-Variable.n-}&offset=0&extended=0&v=5.103
{-Variable.token-} - токен пользователя
{-Variable.id-} - айди пользователя (если группы/паблик то в начале всегда добавляй "-" )
{-Variable.key-} - ключевой запрос
{-Variable.n-} - количество получаемых записей
Остальные не указанные префиксы можешь посмотреть в оф.документации Вк
 
  • Спасибо
Реакции: fri-lancer

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
418
Благодарностей
156
Баллы
43
Спасибо!
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)