2024年10月

这个blog最初就是拿来试手做的, 以前的贴文我说过这个,就是想看看正经做一个站而不是采集垃圾站会怎么样。中间有过几次波折,比如域名选取不当而被迫中途改域名。现在时间够久了,可以回顾性发言了。

首先blog的内容,从搜索引擎角度来说应该都是优质内容,因为是全部原创的,而且文字多,关键字集中,内容角度应该算一个非常优质的网站。不过外链比较少,毕竟这年头想不花钱不大会有人给你外链。 近大半年下来,蜘蛛仍然只保持非常低的爬取频率,说明一件事,外链的重要性还是超过了内容本身的。
另外一个影响因素是,页面过少。页面过少的两大问题,一是搜索引擎觉得你的站点内容少价值不大,另外就是,就算给高权重也不会有多大流量。

以上两点决定了,这个站注定是失败的。

下面贴一下google/bing的统计图。
先说结论:
一、google的流量相对bing少了很多。这点符合预期,因为墙的原因,google价值远低于Bing。
二、bing上有展示数和点击数,可以看出,展示与点击的比率是非常高的,表明内容确实是优质受欢迎的。在webmaster工具里也看以看到,好几个关键词都是排第一,大多数关键词都是排前3,然而如此少的点击和展示表明两件事,一是关键词本身就没人有兴趣,因为这个站主要是主机内容偏多过于小众,另外就是,页面实在太少。

问题已经是很清楚明确的,不过也是无法解决的,要想优质就不可能有大量内容,想要大量内容就只能是垃圾采集。
一句话,做站已死,有事烧纸。

google.jpg

bing.jpg

这几天折腾typecho中,当然,免不了折腾些小工具,昨晚花了一个晚上捣鼓几行代码,晕得很,不过总算成了。
它的功能是找到评论页里的csrf token,然后提交一个请求,懂的自然懂,用处不解释了。

                import "github.com/dop251/goja"
....
        tokenRe := regexp.MustCompile(`input\.value[\s\S]*?\(\);\s*`)
        tokenScriptMatch := tokenRe.FindStringSubmatch(string(commentBody))

        var token string
        var formData url.Values
        if len(tokenScriptMatch) > 0 {
            js := tokenScriptMatch[0][14:]
            token = executeJS(js)
            fmt.Println("Found token:", token)
            formData = url.Values{
                "author": {author},
                "mail":   {mail},
                "url":    {postURL},
                "text":   {text},
                "_":      {token},
            }
        } else {
            fmt.Println("No token found in the comment page.")
            formData = url.Values{
                "author": {author},
                "mail":   {mail},
                "url":    {postURL},
                "text":   {text},
            }
        }

....

func executeJS(jsCode string) string {
    vm := goja.New()
    val, err := vm.RunString(jsCode)
    if err != nil {
        fmt.Println("Error executing JavaScript:", err)
        return ""
    }
    return val.String()
}

用久了typecho,觉得还蛮轻巧好使,我喜欢轻量及极简(寒碜)风格。不过,功能确实也简陋了。
目前已经发现的更改需求:

  • 首页需要把分类标签做在导航条上。
  • 首页仅显示指定的分类的文章,其余分类在自己的分类标签下才能看到。
  • 最近文章,需要根据分类来,就是只显示当前分类的最近文章而不是全部。
  • 资源使用相对路径,方便更换域名和套cdn。

差不多都完成了。再继续找痛点继续改,把它改完善些,到时候我再贴出来代码。
当然,这样一改就是和官方版完全绝缘了,不过官方也不指望他的更新了。

gpt越来越忘事,花了一上午调教,终于调好了。
心得是,在每一个修改要求后都唠叨一下:

给我完整代码! 在修改时,请严格保持yaml的字段名等你不允许擅自修改,同时我没让你改的代码严禁你改。

至于代码干啥,先卖关子了,毕竟还在继续改,只贴一下yaml文件,基本就能猜到了:

http_port: "880"  # HTTP 监听端口
https_port: "8443" # HTTPS 监听端口
backend: "http://1.2.3.4"  # 后端服务的完整 URL,包含协议、端口和路径
cert_file: "./cert"    # HTTPS 证书文件
key_file: "./key"      # HTTPS 密钥文件

replaces:                              # 替换规则
  "fnc2o": "www"
  "foobar": "barfoo"

host: "www.domain.com"  # Host header for backend requests

max_requests: 4  # 每分钟最大请求次数
max_404s: 3         # 针对一个 IP 的最大 404 返回次数
unblock_time: 10         # 解封时间,单位为秒

熬了一个通宵,终于回到家了。
为什么我也要凑黄金周这热闹?因为黄金周机票便宜啊。单向客流,年纪大点的人都知道以前的火车的春运,一边是挤都挤不上车,一边是大量的空车。 飞机其实也一样。
继续开始工作了,也开始更新这没人看的博客。看了下网站统计,还真有好多天是0ip。