整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          網頁轉pdf,這個工具真好用

          兩天有個客戶需要把網頁轉為pdf,之前也沒開發過類似的工具,就在百度搜索了一波,主要有下面三種

          1. 在線轉pdf
          2. 使用瀏覽器打印功能轉pdf
          3. 使用本地軟件工具轉pdf

          在線轉pdf

          在百度(我一般用必應)搜索“在線網頁轉pdf”就有很多可以做這個事的網站,免費的如

          • PDF24Tools

          各種pdf的操作都有,免費使用,速度一般。

          官網地址https://tools.pdf24.org/zh

          PDF24 Tools

          • doctron

          開源免費項目,使用golang寫的,提供在線轉

          官網地址http://doctron.lampnick.com/

          doctron在線體驗demo

          還有挺多其他的,可以自己搜索,但是都不符合我的預期。

          使用瀏覽器打印功能轉pdf

          1. 在瀏覽器右鍵,點擊打印或者ctrl+p
          2. 在彈出的打印對話框中找到目標打印機選擇“另存為PDF”
          3. 點擊“保存”按鈕即可下載pdf了

          使用本地軟件工具轉pdf

          Doctron,這是我今天要介紹的重頭戲。

          Doctron是基于Docker、無狀態、簡單、快速、高質量的文檔轉換服務。目前支持將html轉為pdf、圖片(使用chrome(Chromium)瀏覽器內核,保證轉換質量)。支持PDF添加水印。

          • 使用chrome內核保證高質量將HTML轉為pdf/圖片。
          • 簡易部署(提供docker鏡像,Dockerfile以及k8s yaml配置文件)。支持豐富的轉換參數。轉為pdf和圖片支持自定義大小。
          • 無狀態服務支持。

          管他的,先把代碼下載下來再說

          git clone https://gitcode.net/mirrors/lampnick/doctron.git

          倉庫

          運行

          go build
          ./doctron --config conf/default.yaml

          運行截圖

          轉pdf,訪問http://127.0.0.1:8080/convert/html2pdf?u=doctron&p=lampnick&url=<url>,更換鏈接中的url為你需要轉換的url即可。

          轉換效果

          然后就可以寫程序去批量轉換需要的網頁了,但是我需要轉換的網頁有兩個需求

          1、網站需要會員登錄,不然只能看得到一部分

          2、需要把網站的頭和尾去掉的

          這就為難我了,不會go語言啊,硬著頭皮搞了,肯定有個地方打開這個url的,就去代碼慢慢找,慢慢調試,功夫不負有心人,終于找到調用的地方了。

          第一步:添加網站用戶登錄cookie

          添加cookie之前

          添加cookie之后

          第二步:去掉網站頭尾

          chromedp.Evaluate(`$('.header').css("display" , "none");
          		$('.btn-group').css("display" , "none");
          		$('.container .container:first').css("display" , "none");
          		$('.breadcrumb').css("display" , "none");
          		$('.footer').css("display" , "none")`, &ins.buf),

          打開網頁后執行js代碼把頭尾隱藏掉

          第三步:程序化,批量自動生成pdf

          public static void createPDF(String folder , String cl ,  String pdfFile, String urlhref) {
                  try {
                      String fileName = pdfFile.replace("/", ":");
                      String filePath = folder + fileName;
                      File srcFile = new File(filePath);
                      File newFolder = new File("/Volumes/disk2/myproject" + File.separator + cl);
                      File destFile = new File(newFolder, fileName);
                      if(destFile.exists()){
                          return;
                      }
                      if(srcFile.exists()){
                          //移動到對應目錄
                          if(!newFolder.exists()){
                              newFolder.mkdirs();
                          }
                          FileUtils.moveFile(srcFile , destFile);
                          return;
                      }
                      if(!newFolder.exists()){
                          newFolder.mkdirs();
                      }
                      String url = "http://127.0.0.1:8888/convert/html2pdf?u=doctron&p=lampnick&url="+urlhref;
                      HttpEntity<String> entity = new HttpEntity<String>(null, null);
                      RestTemplate restTemplate = new RestTemplate();
                      ResponseEntity<byte[]> bytes = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class);
                      if (bytes.getBody().length <= 100) {
                          if(urlList.containsKey(urlhref)){
                              Integer failCount = urlList.get(urlhref);
                              if(failCount > 3){
                                  System.out.println("下載失敗:" + cl + " / " + pdfFile +"  " + urlhref);
                                  return;
                              }
                              failCount++;
                              urlList.put(urlhref , failCount);
                          }else{
                              urlList.put(urlhref , 1);
                          }
          
                          createPDF(folder , cl ,  pdfFile , urlhref);
                      }else{
                          if (!destFile.exists()) {
                              try {
                                  destFile.createNewFile();
                              } catch (Exception e) {
                                  e.printStackTrace();
                              }
                          }
                          try (FileOutputStream out = new FileOutputStream(destFile);) {
                              out.write(bytes.getBody(), 0, bytes.getBody().length);
                              out.flush();
                          } catch (Exception e) {
                              e.printStackTrace();
                          }
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }

          最終成果:


          文件夾分類存放

          pdf文件

          融界2024年1月6日消息,據國家知識產權局公告,杭州安恒信息技術股份有限公司申請一項名為“一種鏡像網站制作方法、裝置、設備及存儲介質“,公開號CN117349567A,申請日期為2023年11月。

          專利摘要顯示,本發明公開一種鏡像網站制作方法、裝置、設備及存儲介質,應用于網站鏡像領域,從目標網站中獲取動態網頁和/或偽靜態網頁在不同請求參數下的動態網頁內容和/或偽靜態網頁內容;將動態網頁內容和/或偽靜態網頁內容以HTML格式存儲得到動態資源文件和/或偽靜態資源文件;基于資源文件路徑、資源文件名及請求參數對動態資源文件和/或偽靜態資源文件進行唯一性命名;基于動態資源文件和/或偽靜態資源文件構建目標網站的鏡像網站。將在不同請求參數下的動態網頁內容和/或偽靜態網頁內容以HTML格式進行存儲,基于唯一性命名后的動態資源文件和/或偽靜態資源文件構建鏡像網站,實現了制作包含偽靜態網頁和動態網頁的網站的鏡像網站。

          本文源自金融界

          像網站指的是和你的網站基本一樣、并且實時同步的其它網站。就像照鏡子一樣,所以名為鏡像。

          有的鏡像網站是沒有惡意的,很可能是你自己設置的,為了方便用戶能從多個域名訪問網站,被封了一個,還有其它的域名。比如著名的草榴社區,好像就有很多鏡像可以訪問。

          有的鏡像,也就是這里討論的鏡像,是不懷好意的,通常是別人設置的,要么為了負面SEO你的網站,要么為了利用你的內容獲得排名,然后把用戶轉向到敏感、非法內容網站上去。

          網上有的文章把采集和鏡像混在一起。雖然表現形式差不多,但嚴格來說,采集和鏡像實現方法、表現形式是有區別的。

          采集的網站一般是提前抓取別人網站的內容,放入自己數據庫,再用程序調用到頁面上。被采集網站有新內容時,采集網站并不能實時同步更新,要再采集之后才能出現。一旦被采集,內容已經在對方數據庫里了,從技術上是無法阻止采集網站顯示這些內容的。這篇帖子說的不是這種。

          鏡像網站并不事先抓取內容,而是有人訪問網站時,實時從被鏡像的網站調取內容,做些處理(替換URL、文字,加文字、加JS等),然后實時顯示。被鏡像的網站有任何更新,鏡像網站是實時同步的。

          網上有賣用于鏡像網站的小偷程序的。小偷程序通常也可以用來做采集。為了不給他們做宣傳,就不提名字了。從他們的官網摘取幾條程序功能,有助于理解后面的內容:

          • 全自動分析,內外鏈接自動轉換、圖片地址、css、js,自動分析CSS內的圖片
          • 內置強大替換和過濾功能,標簽過濾、站內外過濾、字符串替換、等等
          • 偽原創,近義詞替換有利于seo
          • 增加URL路由,實現全站URL變換,個性化本站URL地址
          • 超級模板增加移動模板、自定義欄目功能
          • 增加自動獲取301、302重定向的采集,解決跳WWW,跳https采集
          • 代理IP、偽造IP、隨機IP、偽造user-agent、偽造referer來路、自定義cookie,以便應對防采集措施

          從SEO角度看,權重不高的小站、新站,被鏡像意味著有其它網站和你的網站內容基本一樣,搜索引擎有可能認為你的網站不是原版,鏡像網站才是,所以把排名、流量給了鏡像網站。

          對有一定歷史、權重的網站,鏡像網站取代原版網站的可能性微乎其微。但從心情角度考慮,被別人鏡像,內容被別人偷走,即使沒有其它明顯后果,也還是挺煩人的一件事。

          另一個煩人的事是,鏡像網站一般來說并不是要和你提供同樣的產品或服務,而是把用戶轉到賭博、色情等服務上去。有的是通過JS把賭博、色情內容顯示給用戶,有的直接把用戶轉向到另外的網站上去。

          有時候注意到被鏡像了是因為自己網站排名下降,懷疑有人負面SEO。有時候是搜索品牌名稱,看到鏡像網站。已經知道自己被鏡像了好辦,直接看下面怎么處理部分。

          一是百度統計后臺:

          受訪域名部分列出了使用相同百度統計代碼的域名。其中出現快照、百度/谷歌翻譯等是正常的,但出現一些奇奇怪怪的域名就要查看一下了,比如上圖里的第5、7、8個,訪問一下就知道都是鏡像SEO每天一帖,引誘用戶賭博的網站,然后站長把SEO每天一帖的統計代碼也照抄過去了。

          看看上面列出的小偷出現功能就知道,其實統計代碼很容易替換或刪除的。所以在受訪域名只能看到一小部分鏡像網站。

          第二是搜索網站的特征句子。最容易想到的是網站品牌名稱、首頁標題等,確實可以發現一些鏡像網站。但如前所述,品牌名絕大多數是會被替換的,所以我更喜歡搜索一些頁面上的特征句子,比如本博客最上面的副標題:Zac的SEO博客,堅持12年,優化成為生活。搜索一下就會看到:

          把對方主機IP先屏蔽了。不過鏡像網站來實時抓取用的IP大部分情況下不是域名主機IP,可能是CDN,可能是偽造IP,也可能是多IP的服務器。要發現必須屏蔽的IP,需要查看網站原始日志。我的一個小竅門是,訪問鏡像網站上一個很少人會訪問的頁面,比如翻頁第70頁,然后馬上查看日志,這個頁面被訪問的IP就是應該屏蔽的IP,等等。


          主站蜘蛛池模板: 亚洲bt加勒比一区二区| 国产精品一区二区四区| 国产精品视频免费一区二区| 一区在线免费观看| 四虎成人精品一区二区免费网站| 国精产品一区一区三区| 国产裸体舞一区二区三区| 99久久国产精品免费一区二区| 成人无码精品一区二区三区| 国产精品视频一区二区三区经| 国产日韩一区二区三免费高清| 无码AⅤ精品一区二区三区| 学生妹亚洲一区二区| 国产大秀视频一区二区三区| 中文字幕aⅴ人妻一区二区 | 免费视频一区二区| 亚洲中文字幕丝袜制服一区| 国产精品亚洲综合一区在线观看 | 日韩AV无码一区二区三区不卡| 亚洲欧美成人一区二区三区| 少妇特黄A一区二区三区| 无码国产伦一区二区三区视频 | 国产精品无码一区二区三区免费| 久久人妻av一区二区软件| 一区二区三区人妻无码| 曰韩精品无码一区二区三区| 国产在线精品一区二区夜色 | 久久国产高清一区二区三区| 日美欧韩一区二去三区 | 亚洲电影一区二区| 91福利视频一区| 中文字幕av人妻少妇一区二区| 竹菊影视欧美日韩一区二区三区四区五区| 久久91精品国产一区二区| 91精品国产一区二区三区左线| 99精品国产一区二区三区2021| 99国产精品欧美一区二区三区 | 中文人妻av高清一区二区| 一区二区三区在线免费看| 无码中文字幕乱码一区| 一区二区三区内射美女毛片 |