Java和PHP兩種方式實現上傳圖片到新浪微博的圖床
這幾天遇到一個需求,需要將圖片上傳到新浪微博的圖傳,研究了一下, 特此記錄
1.模擬登陸,獲取cookie
登入地址為:
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543
引數為:entry=sso&gateway=1&from=null&savestate=30&useticket=0&pagerefer=&vsnf=1&su=" + base64username+"
&service=sso&sp=" + password + "&sr=1920*1080&encoding=UTF-8&cdult=3&domain=sina.com.cn&prelt=0&returntype=TEXT
然後使用post請求,獲取cookie,可以從返回的cookie中找到(SUB:)開始的那段,為精簡後的cookie2.上傳圖片
地址為:
http://picupload.service.weibo.com/interface/pic_upload.php?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog&cb=http://weibo.com/aj/static/upimgback.html?_wv=5&callback=STK_ijax_" + new Date().getTime();
然後post提交,解析返回的json串,獲取圖片的pid
3.獲取上傳後的圖片地址
public static String getImageUrl(String pid, int sizeidx, boolean https) {
String[] sizeArr = new String[]{"large", "mw1024", "mw690", "bmiddle", "small", "thumb180", "thumbnail", "square"};
pid = pid.trim();
String size = sizeArr[sizeidx];
// 傳遞 pid
Pattern p = Pattern.compile("^[a-zA-Z0-9]{32}$");
Matcher m = p.matcher(pid);
if (m.matches()) {
System.out.println("匹配了");
CRC32 crc32 = new CRC32();
crc32.update(pid.getBytes());
return (https ? "https" : "http") + "://" + (https ? "ws" : "ww")
+ ((crc32.getValue() & 3) + 1) + ".sinaimg.cn/" + size
+ "/" + pid + "." + (pid.charAt(21) == 'g' ? "gif" : "jpg");
}
// // 傳遞 url
String url = pid;
Pattern p1 = Pattern.compile("^(https?://[a-z]{2}d.sinaimg.cn/)(large|bmiddle|mw1024|mw690|small|square|thumb180|thumbnail)(/[a-z0-9]{32}.(jpg|gif))$");
Matcher m1 = p1.matcher(url);
if (m1.find()) {
return m.group(1) + size + m.group(3);
}
return null;
}
詳細程式碼見:https://download.csdn.net/download/x5201314j/10322083
相關文章
- 使用Vue實現圖片上傳的三種方式Vue
- PHP 指令碼實現 Markdown 文章上傳到七牛圖床PHP指令碼圖床
- 用Vue來實現圖片上傳多種方式Vue
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- PHP實現圖片(檔案)上傳PHP
- 個人圖床配置,實現部落格園圖片上傳自由圖床
- 搭建微博圖床圖床
- 解決新浪微博圖床 403 批次下載圖片等資源(以 MMChat 資料集為例)圖床
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- 兩種方式實現輪播圖
- 實現圖片染色效果的三種方式
- 利用微信公眾號提供的官方API上傳圖片獲取永久圖片素材!當圖床用!API圖床
- vue 實現貼上上傳圖片Vue
- django 實現圖片上傳和顯示操作Django
- formData原生實現圖片上傳ORM
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- php 非同步上傳圖片幾種方法總結PHP非同步
- 實現圖片懶載入的三種方式
- mac下使用指令碼為圖片加水印、上傳圖床Mac指令碼圖床
- php+WebUploader圖片批量上傳PHPWeb
- 使用tinypng對需要上傳Gitee圖床的圖片進行壓縮Gitee圖床
- 兩種純CSS方式實現hover圖片pop-out彈出效果CSS
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 微信小程式 圖片上傳微信小程式
- element-ui+Vue實現的圖片上傳UIVue
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- 短視訊平臺開發,圖片上傳和圖片預覽功能實現
- Java學習筆記(一)上傳圖片到七牛雲的詳細實現流程Java筆記
- node+express實現圖片上傳功能Express
- layui中實現上傳圖片壓縮UI
- 通過API介面實現圖片上傳API
- Python網路爬蟲2 - 爬取新浪微博使用者圖片Python爬蟲
- css實現圖片自適應容器的幾種方式CSS
- python 開發一款圖片壓縮工具(四):上傳圖床Python圖床
- 批次複製新浪微博相簿圖片及影片,你都是怎麼操作的呢?
- struts:實現圖片的上傳 argument type mismatch errorError
- 上傳圖片
- 那些年的QQ空間-從前到後實現圖片上傳(1)