我尝试使用以下代码登录经过身份验证的网页:
$workingDirectory/./pyt www.tczonline.ir
wget -q -P $workingDirectory/ --load-cookies=$workingDirectory/cookies.txt --save-cookies=$workingDirectory/cookies.txt --keep-session-cookies http:// www.tczonline.ir/?m=user
在第一行中,python脚本从cookies.sqlitefirefox生成的文件。在
好吧,这是可行的,但直到我用firefox手动登录网页。
如果我不使用firefox登录,这将不起作用。在
为什么会这样?在
为什么wget在不使用firefox的情况下不能独立工作?在
要仅使用wget执行此操作,需要首先将凭据发送到登录页面,然后在下一个请求中使用返回的cookie。代码中的页面使用一个简单的post请求(没有javascript等),因此不会太困难:
之后,文件
cookies.txt
应该包含会话cookie,您可以像上面所示的那样继续。wget
可以独立于Firefox工作。你告诉它加载你的Firefox cookies(load-cookies=$workingDirectory/cookies.txt
),所以它这么做了!如果你不想使用Firefox,还有其他选择。首先,你可以使用其他浏览器的cookies,只要它们是Netscape格式(这是大多数浏览器)。对于IE,您可以通过
File > Import and Export > Export Cookies
使用导出cookies并将wget
指向其位置。你也可以自由地不使用任何浏览器cookies。
wget
可以自己处理保存和加载cookies;您只需告诉它这样做:在这里,我们大概是将}作为密码提交到站点的登录表单中。
^{pr2}$foo
作为用户名和{save-cookies
选项,嗯。。。将cookies保存到指定位置。keep-session-cookies
选项还保存会话cookie,以便您可以执行基于身份验证的活动。如果您只使用save-cookies
,但使用keep-session-cookies
选项,对站点而言,多个Wget运行被视为单个浏览器会话。Read more about ^{}'s HTTP options 。
相关问题 更多 >
编程相关推荐