引流技术-通过文件中增加联系方式并传播

文章目录

    • 前言
    • 文档增加联系方式
    • 扩散
      • 网盘扩散
      • 自建网站
      • 借力
    • 注意

前言

很多人在找资料的时候可能都遇到过下图情况:
1、文档最后面留一个自己的联系方式;
2、找的一堆文件中都有相同的情况;
3、一段时间全网搜到的很多相同文件也有这个联系方式。

那么这个怎么做的?今天我们来亲自试验一下。

file

文档增加联系方式

我们看到的文档可能有PDF、word,首先我们来看看word当怎么处理,word一般会有两种后缀名:doc、docx,docx比较好处理,是基于XML的,而doc格式的文档是一个较老的、二进制格式的文件。所以我们需要把doc转换成docx文档后再批量添加图片。

还有一个问题就是我电脑是MAC,一般我们会用到win32com来处理doc文档转换,但是mac不支持,所以我们要用到另外一个工具LibreOffice
需要下载安装后配置环境变量。

下载官网:https://www.libreoffice.org/

安装后正常配置环境变量哦

下面我们来看看具体代码:

import os
import subprocess
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH

def convert_doc_to_docx(doc_path):
    """使用LibreOffice将DOC文件转换为DOCX文件"""
    docx_path = doc_path + 'x'
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", doc_path, "--outdir", os.path.dirname(doc_path)])
    return docx_path

def add_image_to_docx(docx_path, image_path):
    """在DOCX文档末尾添加居中的图片"""
    doc = Document(docx_path)
    p = doc.add_paragraph()
    run = p.add_run()
    run.add_picture(image_path, width=Inches(2.0))  # 图片大小可以根据需要调整
    paragraph_format = p.paragraph_format
    paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    doc.save(docx_path)

def convert_docx_to_pdf(docx_path):
    """使用LibreOffice将DOCX文件转换为PDF"""
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "pdf", docx_path, "--outdir", os.path.dirname(docx_path)])

def process_folder(folder_path, image_path):
    """处理文件夹中的所有DOC和DOCX文件"""
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if filename.endswith('.doc'):
            docx_path = convert_doc_to_docx(file_path)
            add_image_to_docx(docx_path, image_path)
            convert_docx_to_pdf(docx_path)
            os.remove(docx_path)  # 删除转换后的DOCX文件
            print(f"Processed {filename}")
        elif filename.endswith('.docx'):
            add_image_to_docx(file_path, image_path)
            convert_docx_to_pdf(file_path)
            print(f"Processed {filename}")

# 调用函数
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径
process_folder(folder_path, image_path)

接下来我们看一下PDF怎么处理,PDF比较特殊的就是加密的文件了,这种文件没办法直接写,需要创建新文件把内容copy进去后在最后面增加图片。
具体代码如下:

import os
import fitz  # PyMuPDF

def add_image_to_pdf_centered(pdf_path, image_path):
    """在PDF文档的最后添加一个新页面,并在其中居中插入一张图片"""
    # 打开原始PDF
    pdf_doc = fitz.open(pdf_path)

    # 获取PDF的尺寸以适配新页面
    if pdf_doc.page_count > 0:
        page = pdf_doc[0]
        page_width, page_height = page.rect.width, page.rect.height
    else:
        # 如果PDF为空,使用默认的A4尺寸
        page_width, page_height = fitz.paper_rect('a4').size

    # 添加新页面
    pdf_doc.new_page(width=page_width, height=page_height)

    # 计算图片的位置以使其居中
    img = fitz.open(image_path)
    img_width, img_height = img[0].rect.width, img[0].rect.height
    scale = min(page_width / img_width, page_height / img_height)
    new_width, new_height = img_width * scale, img_height * scale
    x1 = (page_width - new_width) / 2
    y1 = (page_height - new_height) / 2
    rect = fitz.Rect(x1, y1, x1 + new_width, y1 + new_height)

    # 在新页面上插入居中的图像
    last_page = pdf_doc[-1]
    last_page.insert_image(rect, filename=image_path)

    # 保存修改后的PDF,重写整个文件
    new_pdf_path = pdf_path.replace('.pdf', '_new.pdf')  # 创建新文件以避免覆盖原文件
    pdf_doc.save(new_pdf_path)
    pdf_doc.close()

# 调用函数
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径

for filename in os.listdir(folder_path):
    if filename.endswith('.pdf'):
        pdf_path = os.path.join(folder_path, filename)
        add_image_to_pdf_centered(pdf_path, image_path)
        print(f"Image added to {filename}")

当然我们也可以把两个脚本合并,直接一把梭。

import os
import fitz  # PyMuPDF
import subprocess
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH

# 处理PDF的函数
def add_image_to_pdf_centered(pdf_path, image_path):
    pdf_doc = fitz.open(pdf_path)
    if pdf_doc.page_count > 0:
        page = pdf_doc[0]
        page_width, page_height = page.rect.width, page.rect.height
    else:
        # 使用默认的A4尺寸
        page_width, page_height = fitz.paper_rect('a4').size

    pdf_doc.new_page(width=page_width, height=page_height)
    img = fitz.open(image_path)
    img_width, img_height = img[0].rect.width, img[0].rect.height
    scale = min(page_width / img_width, page_height / img_height)
    new_width, new_height = img_width * scale, img_height * scale
    x1 = (page_width - new_width) / 2
    y1 = (page_height - new_height) / 2
    last_page = pdf_doc[-1]
    last_page.insert_image(fitz.Rect(x1, y1, x1 + new_width, y1 + new_height), filename=image_path)
    new_pdf_path = pdf_path.replace('.pdf', '_new.pdf')
    pdf_doc.save(new_pdf_path)
    pdf_doc.close()

# 处理Word的函数
def convert_doc_to_docx(doc_path):
    docx_path = doc_path + 'x'
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", doc_path, "--outdir", os.path.dirname(doc_path)])
    return docx_path

def add_image_to_docx(docx_path, image_path):
    doc = Document(docx_path)
    p = doc.add_paragraph()
    run = p.add_run()
    run.add_picture(image_path, width=Inches(2.0))
    paragraph_format = p.paragraph_format
    paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    doc.save(docx_path)

def convert_docx_to_pdf(docx_path):
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "pdf", docx_path, "--outdir", os.path.dirname(docx_path)])

# 综合处理函数
def process_files(folder_path, image_path):
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if filename.endswith('.pdf'):
            add_image_to_pdf_centered(file_path, image_path)
            print(f"Image added to {filename}")
        elif filename.endswith('.doc'):
            docx_path = convert_doc_to_docx(file_path)
            add_image_to_docx(docx_path, image_path)
            convert_docx_to_pdf(docx_path)
            os.remove(docx_path)  # 删除转换后的DOCX文件
            print(f"Processed {filename}")
        elif filename.endswith('.docx'):
            add_image_to_docx(file_path, image_path)
            convert_docx_to_pdf(file_path)
            print(f"Processed {filename}")

# 设置文件夹和图片路径
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径

# 调用处理函数
process_files(folder_path, image_path)

至此,我们就可以把我们的文档全部添加自己的联系方式。
file

扩散

有了文档,我们就可以进行扩散了,介绍几个我了解的方式:

网盘扩散

通过网盘,把自己文件放在网盘中,然后再通过文章等传播即可。

这种可能很多人要看电影的时候也会遇到,你搜到的电影文档内没有内容,只有一个联系方式,让你加联系方式进群后再把相关的视频发你,达到引流作用。

自建网站

可以自己建一个网站,把所有文档放在服务器,然后让大家去下载。

当然很多人说这样子的话我直接在网站首页留联系方式不是更直接,这个有其他可能,就是有些人在你网站下载了文件,给了他的朋友看,这是不是间接传播了。

借力

我们可以找一些类似于百度文库、还有其他的学习论坛有收集文档的情况,我们把自己的文档上传,借助这些平台的流量,扩大文档被检索的可能。

注意

很多文档可能有版权,这个要注意。

很多平台会检测文档中是否有联系方式等违规的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/369987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ,RocketMQ,Kafka等。Zookeeper作为一个分布式的小文件管理系统,同样能实现简单的队列功…

【LeetCode: 2670. 找出不同元素数目差数组 + 哈希表 + 前后缀处理】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

问题:下列哪些属于历史文化资源的特征( ). #学习方法#学习方法

问题:下列哪些属于历史文化资源的特征( ). A、稀缺性 B、脆弱性 C、可再生性 D、多样性 参考答案如图所示

Apple Vision Pro:新的隐私噩梦?

长期以来,苹果被誉为最注重隐私的科技公司之一,但如今,凭借售价 3499 美元的 Vision Pro,苹果可能已经打造出了一款终极监控机器。 作为苹果首款头戴式“空间计算”显示设备,号称将打造数字世界与物理世界交汇的新空间…

STL篇三:list

文章目录 前言1.list的介绍和使用1.1 list的介绍1.2 list的使用1.3 list的迭代器的失效 2.list的模拟实现2.1 结点的封装2.2 迭代器的封装2.2.1 正向迭代器2.2.2 反向迭代器 2.3 list功能的实现2.3.1 迭代器的实例化及begin()、end() 2.3.2 构造函数2.3.3 赋值运算符重载2.3.4 …

Axure RP9原型设计工具使用记录:基础操作

Axure RP9使用记录一 📚第一章 前言📗背景📗目的 📚第二章 基础介绍及操作📗页面功能总览📗基础操作📕设置样式📕设置交互📕设置组合📕设置动态面板&#x1f…

PyTorch使用

前言 系统环境:win10 使用Anaconda,Anaconda的安装自行百度。 目录 前言 创建虚拟环境 1、查看当前有哪些虚拟环境 2、创建虚拟环境pytorch 3、激活及关闭pytorch虚拟环境 4、删除pytorch虚拟环境 使用yolov5测试 1、切换至yolov5目录下&…

淘宝镜像到期如何切换镜像及如何安装淘宝镜像

淘宝镜像到期如何切换镜像及如何安装淘宝镜像 一、淘宝镜像到期如何切换新镜像二、第一次使用淘宝镜像如何配置镜像 一、淘宝镜像到期如何切换新镜像 清空缓存:npm cache clean --force切换镜像源:npm config set registry https://registry.npmmirror.…

nodejs+vue+ElementU教师科研管理系统l33wm

本次开发一套高校教师科研管理系统有管理员,教师,学院三个角色。管理员功能有个人中心,教师管理,学院管理,科研课题管理,软件著作权管理,论文信息管理,专利信息管理,科研…

AI大模型专题:OWASP大语言模型应用程序十大风险V1.0

今天分享的是AI大模型系列深度研究报告:《AI大模型专题:OWASP大语言模型应用程序十大风险V1.0》。 (报告出品方:OWASP) 报告共计:14页 LM01:2023_ 提示词注入 描述:提示词注入包括绕过过滤器…

稀疏场景高性能训练方案演变|京东广告算法架构体系最佳实践

近年来,推荐场域为提升模型的表达能力和计算能力,模型规模和计算复杂度大幅增加,同时,高规格硬件资源为模型迭代、算法优化带来了更大的机遇和挑战。为了应对模型规模和算力升级带来的存储、IO和计算挑战,京东零售广告…

docker 安装minio

MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 MinIO与传统的存储和其他的对象存储不同的是:它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为MinIO一开始就只…

Arthas-Java应用生产可用诊断神器

一、背景与简介 1、介绍 如果你的程序是Java开发,有时候生产环境出现性能瓶颈或者接口访问缓慢、又或者本地环境无法进行复现,只会在线上产生bug或者问题,这时候我们需要进行在线debug排查问题。但是生产环境又不能轻易重启、或者使用传统方…

django区县网络安全执法模式研究flask python

作为一款区县网络安全执法模式研究,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多功能…

软件成本度量

1. 软件成本度量的意义 软评的意义主要在于其在软件项目的预算、招投标、实施及决算后评估阶段的重要作用。 在预算及招投标阶段,软评通过软件成本度量有助于制定合理的项目预算,规范招投标行为。这一阶段,甲方需要准确估算项目成本和合理的投…

加速数字化之旅:MessageBox赋能HubSpot与微信公众号的无缝整合

在数字化时代,企业需要整合关键平台以适应快速变化的市场。HubSpot和微信公众号的整合成为数字化营销的核心策略之一。MessageBox作为整合的关键力量,通过其卓越的能力,极大地加速了HubSpot与微信公众号的融合过程。今天运营坛将深入探讨Mess…

【OpenCV人脸检测】写了个智能锁屏小工具!人离开电脑自动锁屏

文章目录 1. 写在前面2. 设计思路3. 人脸检测4. 程序实现 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…

React Hooks 学习笔记

1.useState() 实现对页面数据的存储,当数据改变时候,自动触发render函数 2.useRef 用来解决两个问题: 1).是获取DOM元素或子组件的实例对象 2).存储渲染周期之间共享的数据 3.useEffect 4.useLayoutEffect 5…

数据结构(C语言)代码实现(六)——单链表的实现

目录 参考、格式 头文件LinkList.h 一、将函数的小括号写成中括号 二、读取权限冲突 三、L->Last指针没有移动 四、函数指针的使用 头文件完整代码 测试函数(主函数)test.cpp 测试结果 参考、格式 数据结构课本2.3节(严蔚敏版&a…