Halo博客的谷歌收录自动提交

本文介绍了如何为Halo博客配置Google indexing API,以实现谷歌收录的自动提交。详细步骤包括创建服务账号、获取访问令牌、验证网站所有权、设置项目、部署以及使用Docker容器部署服务。
摘要由CSDN通过智能技术生成

Halo博客的谷歌收录自动提交

前言

  • Halo博客的百度定时页面提交一文中已经实现了向百度的主动页面提交,而对于Google平台,实际上并不需要设计类似的功能,一方面Google的基于sitemap的抓取效果已经很好,另一方面,虽然Google也提供了indexing API以提供主动提交的服务,但是需要挂代理才能访问
  • 但是为了功能的完整性以及可以使用树莓派直接挂代理访问,于是决定基于Google indexing API实现谷歌收录的自动提交

准备工作

  • 实际上,谷歌SEO提供了丰富的文档供站点管理者学习,但是本文仅摘取其中对于indexing API支持的部分,进行简要的介绍
  • 全程设置工作需要正常访问谷歌

获取访问令牌

  • indexing API使用了OAuth2.0的验证方式,请求该API时需要提供访问令牌,因此第一步,首先在Google Cloud Platform中执行相关设置

  • 进入服务账号页面创建项目

    image-20220404164603288

  • 点击创建服务账号

    image-20220404164916395

  • 直接点击完成即可,两个可选部分不用管

    image-20220404164954814

  • 创建私钥,注意选择JSON类型的私钥

    image-20220404165211467

    image-20220404165232614

    • 执行创建后,私钥文件会下载到本地

Search Console添加网站

  • 在Search Console添加网站实际上是验证网站所有权,有多种方法,可参考验证网站所有权

  • 博主自己使用的是域名提供商的方式,比较简单,如下图所示就是验证成功

    image-20220404165656898

赋予服务账号所有者状态

  • 实际上是向第一步创建的服务账号授予第二步添加的网站的所有权

  • 访问网站站长中心,计入到网站条目中,点击添加所有者

    image-20220404170104678

  • 要求输入服务账号电子邮件地址,此地址可以从第一步中下载到的私钥中的client_name字段中找到

项目构建

  • 建立Gradle工程,配置文件如下所示

    plugins {
         
        id 'java'
        id 'application'
    }
    
    group 'xyz.demoli'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.11
    mainClassName="xyz.demoli.Main"
    
    repositories {
         
        mavenCentral()
    }
    
    application{
         
        applicationDefaultJvmArgs = ['-Duser.timezone=GMT+8']
    }
    
    dependencies {
         
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
        compile 'com.google.api-client:google-api-client:1.33.0'
        implementation 'com.google.auth:google-auth-library-oauth2-http:1.3.0'
        compile 'com.google.apis:google-api-services-indexing:v3-rev20200804-1.32.1'
        // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
        implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.9.3'
        implementation 'com.google.code.gson:gson:2.9.0'
        // https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api
        implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.1'
        // https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
        implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.1'
        // https://mvnrepository.com/artifact/org.projectlombok/lombok
        compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
        annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
    }
    
    test {
         
        useJUnitPlatform()
    }
    
    • annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.22'保证gradle项目中lombok的注解可以被正确解析
    • applicationDefaultJvmArgs参数的设置是为了解决后续服务部署在容器中时日志打印时间不是东八区时区的问题
  • 配置文件config.properties如下:

    prefix=https://blog.demoli.xyz
    postAPI=%s/api/content/posts?api_access_key=%s&page=%d
    apiAccessKey=***
    proxyURL=192.168.0.137
    proxyPort=7890
    
    • apiAccessKey是在Halo博客设置中设定的

      image-20220327184136467

    • prefix是Halo博客的首页访问URL

    • proxy的两个配置即是代理配置

  • 日志配置文件如下(粗糙的配置):

    <?xml version="1.0" encoding="utf-8" ?>
    
    <configuration status="INFO">
        <appenders>
            <console name="console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            </console>
        </appenders>
    
        <loggers>
            <root level="INFO">
                <appender-ref ref="console"/>
            </root>
        </loggers>
    </configuration>
    
  • 将准备工作中得到的私钥放在项目的resources目录下,更名为cred.json

  • 整个工程只有两个核心类

    • PostScrap

      import com.google.gson.Gson;
      import com.google.gson.JsonArray;
      import com.google.gson.JsonElement;
      import com.google.gson.JsonObject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值