Оглавление:
Немного предыстории. Как я уже рассказывал в предыдущем материале, со временем я пришел к тому, что неплохо было бы отойти от арендных ссылок, и перейти на так называемые "вечные" ссылки. Так, я познакомился и приобрел замечательную программу Хрумер (XRumer).
В данной статье я расскажу о том, как привести базу данных для программы Хрумер (XRumer) с ссылками к файлу с ссылками в виде доменов 2-го уровня. Домен второго уровня — это уникальный адрес сайта, который находится в определенной доменной зоне (.ru, .com, .info и так далее).
Программа XRumer осуществляет рассылку информации (обычно это ссылки, как анкорные, так и безанкорные, на продвигаемый сайт) по базе ссылок в виде текстового файла. Обычно в режиме постинга бывает нужно такую базу с ссылками вида:
привести к ссылкам на домены второго уровня, типа:
Такая операция бывает нужна при работе с базой для постинга.
В принципе, чтобы выполнить такую операцию, можно открыть файл с базой для XRumer в любом блокноте и вручную удалить лишнее окончание ссылки. Но, дело в том, что такие базы содержат множество таких ссылок, даже не сотни, а тысячи и миллионы таких ссылок. Это займет очень много времени.
Можно попытаться это сделать с помощью программы Notepad++, облегчив себе задачу. Для этого сначала придется избавиться от http:// и https:// во всех строках. Для этого открываете в Нотепаде из верхнего меню пункты «Правка» — «Заменить» (можно просто нажать на Ctrl+H). В верхнее поле вставляете http://, а нижнее оставляете пустым. Жмете на кнопку «Заменить все». Потом в верхнее поле вместо http:// вставляете https:// и опять жмете на эту же кнопку.
Следующей нашей задачей будет удалить в Notepad++ после определенного символа(первого слеша (/)) все, что там будет стоять. Для этого опять же жмете на Ctrl+H. Переходим в режим «Регулярные выражения» (внизу окна), вставляем в первое поле (/.+)$ (если вам нужно будет после другого символа все удалить, то вставьте его вместо слеша), второе поле «Заменить на» оставьте пустым и жмем на кнопочку «Заменить все».
Кое-где в конце остались слеши, поэтому опять клацнете по Ctrl+H, перейдите в обычный режим и вставьте в верхнее поле слеш, а в нижние — ничего. Ну и на кнопочку «Заменить все» нажмите. Получаем все ссылки типа:
В общем-то с поставленной задачей мы справились. Но это не очень удобно. Кроме того, здесь есть, как я думаю, один нюанс. Хрумер будет к сайту обращаться без указания протокола (http:// или https://). В итоге цель будет достигнута, но в данном случае будет затрачиваться немного больше времени. С одной стороны, оно незначительное. С другой стороны, при работе Хрумера с миллионом ссылок, оно будет значительным. А как известно, время - деньги. К тому же все эти манипуляции с Notepad++ не очень удобны.
Взвесив все за и против, я решил написать программу для приведения базы данных под Хрумер (XRumer) для постинга к базе с сылками, в виде домена второго уровня. В качестве языка программирования я выбрал VB.Net (2010 года), т.к. когда-то я увлекался программированием на Visual Basic и у меня на съемном диске уже была настроенная виртуальная машина с данной средой программирования. Я на скорую руку написал несложную программу и хочу ей поделиться. Используя ее Вы соглашаетесь с тем, что я не несу никакой ответственности за Ваши возможные риски. Перед тем, как будете обрабатывать файлы, делайте резервное копирование. Кроме того я выкладываю исходный код данной программы. Вы сами можете ее поправить под себя, как считаете нужным.
Скачать программу для обработки базы данных под постинг Хрумером Вы можете по данной ссылке. Программа заархивирована в формате .zip. Вам ее нужно скачать файл LinkProcessing.zip и разархивировать в каталог файлы архива. На текущей момент в архиве 2 файла. Работает программа в операционных системах Windows, с установленным Microsoft .NET Framework 3.5 и выше. Устанавливать программу не нужно. Достаточно запустить файл "Обработка ссылок.exe". Работает в Win 7 и Win 10. В остальных системах не проверял, но, думаю, что при наличие Microsoft .NET Framework будет работать и в более ранних ОС.
Так же я выкладываю исходный код данной программы, можете им пользоваться:
Private FormState As FormWindowState
'Форма не должна отображаться в панели при сворачивании
'Самоучитель VB 2008; БХВ-Петербург; Стр. 198.
Me.ShowInTaskbar = False
NotifyIcon1.Visible = True
NotifyIcon1.Text = "Обработка ссылок"
Me.StartPosition = FormStartPosition.WindowsDefaultLocation
End Sub
'Диалог сохранения файла
'Самоучитель VB 2008; БХВ-Петербург; Стр. 121.
'Фильтр
SaveFileDialog1.Filter = _
"Files (*.txt)|*.txt|All files (*.*)|*.*"
'Заголовок файла
SaveFileDialog1.Title = "Сохранение файла"
'Определяем существование файла
SaveFileDialog1.DefaultExt = True
'Запрос подтверждения при замене файла
SaveFileDialog1.OverwritePrompt = False
'Обзор в дирректории, указанной выше
SaveFileDialog1.RestoreDirectory = True
'Если указанный файл существует - отображаем его
SaveFileDialog1.FileName = f
'Добавляет расширение к имени файла
SaveFileDialog1.AddExtension = True
'Отображаем диалог выбора файла
SaveFileDialog1.ShowDialog()
'Отображаем путь к файлу и файл
FileSelect = SaveFileDialog1.FileName
'Очищаем компонент
SaveFileDialog1.FileName = Nothing
End Function
'Диалог открытия файла
'Самоучитель VB 2008; БХВ-Петербург; Стр. 121.
'Фильтр
OpenFileDialog1.Filter = _
"Files (*.txt)|*.txt|All files (*.*)|*.*"
'Заголовок файла
OpenFileDialog1.Title = "Открытие файла"
'Определяем существование файла
OpenFileDialog1.DefaultExt = True
'Проверка существования файла
OpenFileDialog1.CheckFileExists = True
'Запрещвем выбор нескольких файлов
OpenFileDialog1.Multiselect = False
'Обзор в дирректории, указанной выше
OpenFileDialog1.RestoreDirectory = True
'Если указанный файл существует - отображаем его
OpenFileDialog1.FileName = f
'Добавляет расширение к имени файла
OpenFileDialog1.AddExtension = True
'Отображаем диалог выбора файла
OpenFileDialog1.ShowDialog()
'Отображаем путь к файлу и файл
FileOpen = OpenFileDialog1.FileName
'Очищаем компонент
OpenFileDialog1.FileName = Nothing
End Function
'Рецепты программирования на Microsoft VB.NET; Мастеркласс; 2004; Стр. 667.
Dim IE As New SHDocVw.InternetExplorer()
IE.Navigate("mailto:[email protected]")
lnkMail.LinkVisited = True
IE.Quit()
End Sub
'Рецепты программирования на Microsoft VB.NET; Мастеркласс; 2004; Стр. 667.
Dim IE As New SHDocVw.InternetExplorer()
IE.Navigate("https://kupisait.ru")
IE.Visible = True
lnkSayt.LinkVisited = True
End Sub
If Me.WindowState = FormWindowState.Minimized Then
Me.Visible = True
Me.WindowState = FormState
Else
Me.Visible = False
Me.WindowState = FormWindowState.Minimized
End If
End Sub
If Me.Visible = False Then Return
If Me.WindowState = FormWindowState.Minimized Then
Me.Visible = False
Else
Me.Visible = True
End If
If Me.WindowState <> FormWindowState.Minimized Then
FormState = Me.WindowState
End If
End Sub
'Обзор файла
Dim f As String
f = FileOpen()
If Trim(f) = "" Then
Return
End If
'Заполняем поле исходного файла именем выбранного файла
txtOpenFile.Text = f
'Заполняем значение конечного файла
txtFinishFile.Text = FileIO.FileSystem.GetFileInfo(f).DirectoryName & "" & IO.Path.GetFileNameWithoutExtension(f) & "_mod_" & FileIO.FileSystem.GetFileInfo(f).Extension
End Sub
'Обзор файла
Dim f As String
f = FileSelect()
If Trim(f) = "" Then
Return
End If
'Заполняем поле конечного файла именем выбранного файла
txtFinishFile.Text = f
End Sub
Dim fileReader As System.IO.StreamReader
Dim fileWriter As System.IO.StreamWriter
If Trim(txtOpenFile.Text) = "" Or Trim(txtFinishFile.Text) = "" Then
MsgBox("Укажите исходный и конечный файлы в соответствующие поля!", MsgBoxStyle.Exclamation)
Exit Sub
End If
Try 'Обработка ошибок
fileReader = My.Computer.FileSystem.OpenTextFileReader(txtOpenFile.Text)
fileWriter = My.Computer.FileSystem.OpenTextFileWriter(txtFinishFile.Text, False)
Dim linenum As Integer = 0
Dim n As Integer = 0
While Not fileReader.EndOfStream()
stringReader = fileReader.ReadLine()
If InStr(stringReader, "https://") > 0 Then
n = InStr(9, stringReader, "/")
ElseIf InStr(stringReader, "http://") > 0 Then
n = InStr(8, stringReader, "/")
End If
If n > 0 Then n = n - 1
stringReader = Mid(stringReader, 1, n)
If Len(stringReader) > 0 Then
fileWriter.WriteLine(stringReader)
Else
fileWriter.WriteLine(fileReader.ReadLine())
End If
linenum = linenum + 1
stringReader = ""
n = 0
End While
fileReader.Close()
fileWriter.Close()
MsgBox(linenum & " строк обработано")
Catch 'Обработка ошибок
MsgBox("Укажите правильно исходный и конечный файлы в соответствующие поля! Исходный файл должен быть существующим!", MsgBoxStyle.Exclamation)
End Try 'Обработка ошибок
End Sub
Чтобы воспользоваться в проекте данным кодом, в среде разработки Вам понадобится форма frmLink. На ней нужно:
разместить кнопки: cmdOpenFile, cmdFinishFile, cmdRun;
разместить текстовые поля: txtOpenFile, txtFinishFile;
и разместить компоненты: SaveFileDialog1, OpenFileDialog1, ToolTip1, NotifyIcon1.
Внутри формы разместите код, указанный выше. Останется только скомпилировать проект.
На этом сегодня все, удачи!