github 下载速度太慢了。
先用导入到码云再下载下来,然后到.git/config
修改git repo url 为原来的
还是有点麻烦,那就做成一个工具吧。
# 简单技巧 下载最后的commit
git clone {url} --depth 1
JS逆向,公钥加密学,base64编码
- 先获取码云的登陆页面;
- python 用户名,密码登陆不行,只能寻找登陆规律了,也就是JS逆向。点击登陆看看有哪些XHR的url,什么断点呀都不行,又又找到了一个encrypt开头的js文件。秘密所在。累。。
- 获取csrf-token以及公钥;
- 用csrf-token 加上RSA加密 password;
- 用加密后的password登陆,逆向成功。
导入到 gitee
- 获取用来导入github repo的页面,后来发观有csrf-token保护。
- 解析新的csrf-token
- 在请求头中加入csrf-token,导入成功。泪渀
代码
# 获取登陆页面
import re
import requests
s = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 Gecko/20100101'}
url_login = 'https://gitee.com/login'
resp_get_login = s.get(login_url, headers=headers)
def parse_token(response):
# 解析 token
result = re.search('<meta content="(.*?)" name="csrf-token"', response.text)
return result.group(1)
详细代码,参考我的repo git2gitee https://github.com/toyourhear...
加密方法
'''
根据公钥加密方法。对应开头为 encrypt 的js文件
'''
from base64 import b64encode
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
def encrypt_pwd(password, public_key):
'''
:params public_key:
-----BEGIN PUBLIC KEY----\nkeys\n-----END ...-----
:params password: csrf-token + '$gitee$' + password
'''
rsa_key = RSA.import_key(public_key)
encryptor = PKCS1_v1_5.new(rsa_key)
cipher = b64encode(encryptor.encrypt(password.encode('utf-8')))
return cipher.decode('utf-8')
check project private 时发现码云可以调换一下检查顺序,节省宽带等。
给gitee的优化建议
- 先检查自己有没有导入过;
- 检查别人有没有导入过。
做成命令行工具
python 下载
pip install git2gitee
使用
# 参数说明 -u 用户名 -k 密码 repo地址 https 协议开头的
git2gitee -u mikele -k not_real_password repo_url
Todo
[x] 检查是否有人已经导入过了
[x] 检查是否已经导入到自己的repo
[] 下载到本地,自动修改config url
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。