+7(960) 250-82-68 spam@mirossa.ru


 mirossa        1С           C         PHP       JAVA       MCU  


Статьи
 
 

25 ноября 2019 г

VK_com Перекинуть друзей на новую страницу.(комические куплеты)

Есть страница во VKontakte, и давно. Захотел скинуть("обнулить") всю историю привязок за эти годы(лайки, переписку, другие взаимодействия). Можно было бы создать просто новую учетку и всё, но друзей хотел перекинуть на новую страницу (а такое ценное барахло как видео, группы, аудио наберется само заново). По уникальному сочетанию друзей в старой и новой учетках легко определить, что это снова Я.
Можно было бы из новой учетки открыть "список друзей в старой учетке" и протыкать для добавления в друзья. Но это как-то нудно, нужно каждую страницу открыть. В итоге с помощью этой штуки(ниже) друзьям(или любым пользоватям) отправляются заявки в друзья. Но VK может прерывать этот процесс Captcha-ей. Когда я добавлял 94 человек на новую страницу, то процесс прошёл без остановок - ни одной капчи не было. Когда тренировался отправлять заявки со старой страницы, то на каждый 5 запрос получал капчу. Капчу естественно вводит человек. Сейчас в этом скрипте Между запросами установлена задержка в 10 секунд(от этого может зависеть появление капчи).

Чтобы перенести список своих друзей(любых пользователей) с одной страницы в VK на другую нужно:
А. Получить список id нужных пользователей(своих друзей).
Б. отправить им заявки в друзья.

А. Получить список id нужных пользователей(своих друзей).

Для этого нужен браузер и вы должны авторизоваться под СТАРОЙ учетной записью. Всё.
а. Узнать свой id.

Открываем браузер в режиме инкогнито(приватный). Чтобы узнать свой id переходим на https://vk.com/dev/users.get,
Переход на users.get
спускаемся до формы "Пример запроса". (+ вы должны быть авторизованы в VK(в этом же браузере))
форма Пример запроса
В поле user_ids пишем адрес своей страницы(если адрес https://vk.com/3453454, то пишем 3453454). выполняем. вы видите "адрес своей страницы" когда вы нажимаете на ссылку "Моя страница" или, в мобильном клиенте,
а. Настройки/Аккаунт... "короткое имя",
б. ссылка Открыть в браузере. (и др).
Если вы не меняли адрес своей страницы в настройках, то короткое имя страницы "совпадает" с id (имя "id3453454", тогда id = "3453454"). И можно пропустить этот шаг.
б. Получить список id своих друзей, используя ваш id.
Переход на friends.get
Переходим на https://vk.com/dev/friends.get, спускаемся до формы "Пример запроса". Указываем ваш id в поле user_id. Остальные поля пустые (очищаем заполненные по умолчанию, кроме поля с версией), тогда получим список id друзей.
Копирование списка id
Список id получен.

Б. отправить им заявки в друзья.

Для этого нужен браузер и вы должны авторизоваться под НОВОЙ учетной записью. И нужно получить access_token. Закрываем браузер. Снова открываем в режиме инкогнито(приватный).

Вариант 1.

Добавлять всех вручную. Нудятина. Не подходит.
Вариант 2.
1. Получить id приложения.
Это делается средствами VK. описание тут https://vk.com/dev/first_guide и https://vk.com/dev/implicit_flow_user.
Если укоротить, то создаете приложение (после выполнения всех операций удалите его):
Переход по ссылке Управление
Если ссылки Управление нет, то можете перейти по https://vk.com/apps?act=manage или по https://vk.com/dev/ и там найти Мои приложения.
Кнопка Создать Приложение
Заполнение полей при создании приложения
Переход по ссылке Редактировать
При переходе по ссылке "Редактировать" откроется страница с информацией о приложении. В адресной строке будет : https://vk.com/editapp?id=948473 с ВАШИМ id приложения (если с этой страницы перейдёте по ссылке Настройки (под ссылкой Информация), то также увидите id приложения на самой странице).
id приложения получен.
2. Получить access_token.
(напомню, что вы в этот момент авторизованы в VK в том же браузере)
В адресную строку вставляете https://oauth.vk.com/authorize?client_id=948473&display=page&redirect_uri=https://oauth.vk.com/blank.html&response_type=token&v=5.52&scope=2
тут видите client_id=948473. Вместо 948473 указываете id вашего приложения.
переходите по этому адресу(Enter).
Появится окно для получения/разрешения доступа Вашему приложению к вашим данным. Разрешаете.
Переход на users.get
В адресной строке появится ответная информация : https://oauth.vk.com/blank.html#access_token=9су73209873ef02edc79c79b1738c2a57beb45e9dd9ad4922727f1895408b14213f211976c4876509ecb&expires_in=86400&user_id=3453454
тут видите access_token=9су73209873ef02edc79c79b1738c2a57beb45e9dd9ad4922727f1895408b14213f211976c4876509ecb
вам нужен 9су73209873ef02edc79c79b1738c2a57beb45e9dd9ad4922727f1895408b14213f211976c4876509ecb
access_token получен. Действует он сутки(по умолчанию).
3. Отправить заявки в друзья всему списку.
Для этого используете этот скрипт на javaScript.
скачайте. Распакуйте. (Можете открыть файлы в блокноте, чтобы увидеть, что ничего плохого там не делается.)
скачать скрипты
откройте файл vk.html в браузере.
Вставьте в соответствующие поля ваш access_token, список id. Введите текст, который будет сопровождать заявки.
Текстовые поля для списка id и ответов сервера можно расширить до нужного размера.
Если вы копировали список id с разделяющими запятой и пробелом, то нажмите кнопку "Убрать запятую и пробел из списка". Каждый идентификатор будет расположен на отдельной строке.
Нажмите Выполнить.
VK может затормозить процесс требованием ввести Captcha (об этом тут https://vk.com/dev/captcha_error). В этом случае процесс отправки запросов тормозится в ожидании ввода капчи. При получении такого сообщения капча отображается на странице. (это не нужно читать: По какой-либо причине капча может быть не отображена, тогда вы копируете её адрес из текста ответа сервера(https://api.vk.com/captcha.php?sid=635584177940&s=1) и переходите по этому адресу(в новом окне). Отобразится картинка. Вы возвращаетесь в основное окно и вводите.) Если капчу сложно понять, то есть кнопка "показать другую Captcha".
Вводите текст из Капчи в поле "что видите на Captcha" и продолжаете нажатием на "отправить повторно с Captcha".
После завершения процесса появится сообщение "OK".
Процесс можно временно прервать - "Принудительная остановка процесса".
И продолжить с того же места - "Возобновить после остановки".
Кнопка "Вывести текущий результат" отображает список положительно отправленных заявок.
Рабочая форма
Рабочая форма
Протестировано в браузере Mozilla Firefox 70

Код в скрипте такой (в архиве есть ещё файл jquery.min.js . Он скачивался отсюда: https://jquery.com/download/):

скачать скрипты

-- file vk.html --

<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8">
			
		<title>Copy VK account</title>
		<script type="text/javascript" src="jquery.min.js"></script>
		<script src="vk.js">
		</script>
	</head>
	<body>
<table border=1px width=1400 height=700>
<tbody>
<tr>
<th>vk </th>
</tr>

<tr>
<td>

<form  enctype="application/x-www-form-urlencoded" id="Form1">
	<br/><br/>
	<b>Скопируйте сюда access_token:</b><input type="text" name="access_token" value="" size="150" id="token">
<br/><br/><br/>
	<b>Текст пользователям:</b><input type="text" value="" size="150" id="txtR"><br/><br/>
	
	<table style="width: 100%; height: 100%;" border="2px">
		<tr>
			<th> Список id </th>
			<th> Технические ответы сервера </th>
		</tr>
		<tr>
			<td><textarea id="txtAr"></textarea></td>
			<td><textarea id="rezult"></textarea><BR/>
			    <b>что видите на Captcha:</b><input type="text" value="" size="50" id="Captcha"><BR/>
				<img id="img1" src="">
				<input type="button" value="отправить повторно с Captcha" onclick="GoOn()">
				<input type="button" value="пропустить этот id" onclick="Skip()">
				<input type="button" value="показать другую Captcha" onclick="CaptchaNext()">
			</td>
		</tr>
	</table>
	
	<input type="button" value="Убрать запятую и пробел из списка" onclick="repl()"><br/><br/>
	<input type="button" value="Отправить заявки списку пользователей" onclick="start()"  id="btnCl">
	<b> текущий индекс:</b><input type="text" value="0" size="9" readonly id="CurInd"><br/><br/>
    <input type="button" value="Принудительная остановка процесса" onclick="stop()"  id="btnCl">
	<input type="button" value="Возобновить после остановки" onclick="GoOn()">
	<input type="button" value="Вывести текущий результат" onclick="resultNow()">
</form>

</td>
</tr>
</tbody>
</table>
<br/>

</body>
</html>

-- file vk.js --

var ids = [];
var ids_rez = [];
var index;
var text;
var length = 0;
var timerId;
var elToken;
var rezult;
var CurInd;
var delay = 10000; // задержка 6 сек. Captcha всё равно появится.
var captcha_key;
var isCaptcha = 0;
var captcha_img;
var randC = 0; //:)

function start(){
	index = 0;
	CurInd = document.getElementById("CurInd");
	CurInd.value = index;
	elToken = document.getElementById("token").value;
	text = document.getElementById("txtR").value;
	rezult = document.getElementById("rezult");
	
	// и инициализация массива ids.
	var txtAr = document.getElementById("txtAr").value;
    ids = txtAr.split('\n');
	length = ids.length;
	
	if (length > 0){
		timerId = setInterval(send, delay);
	}
	
}

function send(){
	// все переменные уже инициализированы
	
	url = "https://api.vk.com/method/friends.add?v=5.103&user_id=" + ids[index] + "&text=" + text 
					+ "&access_token=" + elToken;
	if (isCaptcha == 1){
		url = url + "&captcha_sid=" + captcha_sid + "&captcha_key="
					+ document.getElementById("Captcha").value
	}
	isCaptcha = 0;
	html13 = $.ajax({
		type: "get",
		dataType: 'jsonp',
		url: url,
		async: true,
		data: '',
		success: function(data, textStatus, jqXHR){	//обработчик ответа сервера
					if(data != ""){
						
						rezult.value = JSON.stringify(data);
						
						if ( data.error != undefined){
							if (data.error.error_code == 14){ // "Captcha needed"
								captcha_sid = data.error.captcha_sid;
								captcha_img = data.error.captcha_img;
								CaptchaNext();
								isCaptcha = 1;
							}
							
							//любая другая ошибка
							clearInterval(timerId);
							return;
						}
						
						ids_rez.push(ids[index] + " - OK");
						index++;
						CurInd.value = index;
						if (index == length){
								clearInterval(timerId);
								resultNow();
								window.alert("ОК!");
						}
						
						//console.log(data);
					}
				}
		}).responseText;
		
		
}

function repl(){
	
	var txtAr = document.getElementById("txtAr");
	txtAr.value = txtAr.value.replace(new RegExp(", ",'g'), "\n");
}	

function stop(){
	
	clearInterval(timerId);
}

function GoOn(){
	rezult.value = "";
	document.getElementById("img1").src = "";
	timerId = setInterval(send, delay);  
}

function Skip(){
	index++;
	GoOn();
}

function resultNow(){
	document.getElementById("rezult").value = ids_rez.toString().replace(new RegExp(",",'g'), "\n");
}

function CaptchaNext(){
	var img = document.getElementById("img1");
	//img.src = "";
	randC++;
	document.getElementById("img1").src = captcha_img + randC;
}

На ход ноги
book TEN ARGUMENTS FOR DELETING YOUR SOCIAL MEDIA ACCOUNTS RIGHT NOW by Jaron Lanier
(Десять аргументов для удаления ваших учетных записей в социальных сетях прямо сейчас. Джарон Ланье)

Комментарии




information