[学习分享] python调用wget下载https链接文件,但https要登录,而且账号密码带有@字符,url怎么写?

weixin_38065708 2015-10-22 05:48:50

本帖最后由 yaojun2 于 2015-10-22 17:48 编辑 重点:有个https网站需要登录后才能下载他的文件,

并且登录的用户名或密码中包含了@或:字符。

用wget如何下载呢?

简单的情况:
比如有个ftp文件我要下载,这个ftp需要登录。
用户名是:testuser
密码是:testpass
文件地址是:f-t-p://127.0.0.1/file/bin.rar
用wget下载时直接一句搞定: wget f-t-p://testuser:testpass@127.0.0.1/file/bin.rar

这种组合式的URL中,就直接包含了登录的账号和密码,格式就是ftp://用户名:密码@地址

但这样有一个弊端:
当用户名为test@user
登录密码为test:pass
如果写成wget ftp://test@user:test:pass@127.0.0.1/file/bin.rar
里面的多个@或:特殊符号,会引起歧义了。

看wget的帮助文档,有一段信息:
FTP options:
       --ftp-user=USER         set ftp user to USER.
       --ftp-password=PASS     set ftp password to PASS.
       --no-remove-listing     don't remove `.listing' files.
       --no-glob               turn off FTP file name globbing.
       --no-passive-ftp        disable the "passive" transfer mode.
       --retr-symlinks         when recursing, get linked-to files (not dir).
       --preserve-permissions  preserve remote file permissions.

所以问题解决了,可以这样来写  wget --ftp-user="test@user" --ftp-password="test:pass" 127.0.0.1/file/bin.rar

但对于需要用户名和密码登录的https的网站,wget就没有提供可以输入用户名和密码的参数了。
比如我在网上找的这个地址:h-t-t-p-s://tools.cisco.com/CCIE/Schedule_Lab/CCIEOnline/jsp/UpdateProfile_Form.jsp
用wget下载这个文件时,如果用户名和密码不包含特殊字符,可以直接这样:
wget --no-check-certificate h-t-t-p-s://testuser:testpass@tools.cisco.com/CCIE/Schedule_Lab/CCIEOnline/jsp/UpdateProfile_Form.jsp
这样就能下回这个jsp文件了。

但是如果用户名或密码包含@或:这样的特殊字符,这样拼接就不行了。
有没有哪位知道这种情况如何解决呢?

ftp和https链接中加-的原因是因为贴子提示我不能发带URL的内容。
...全文
372 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧