在 bash 脚本中使用 cURL 的 Javascript 登录
Javascript login using cURL in bash script
我正在尝试编写一个bash脚本,我需要在其中登录到一个使用javascript形式的网站。我从未使用过cURL,因此任何帮助将不胜感激。我知道我需要使用 cookie 并且我有 http 标头,但我不知道我需要如何处理这些标头。
标题是
Response Headers
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Length 0
Content-Type text/html;charset=UTF-8
Date Thu, 17 May 2012 11:25:15 GMT
Expires Tue, 01 Jan 1980 00:00:00 GMT
Last-Modified Thu, 17 May 2012 11:25:16 GMT
Pragma no-cache
Server Apache-Coyote/1.1
X-Powered-By Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/JBossWeb-2.0
Request Headers
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Cookie SMLOGOUT=true; JSESSIONID=8D5757001A594D5CBB07C9250D1CB2B7; JSESSIONIDSSO=A0569CD1D6C981989F0FE691E9AFC314
Host https:/example.com
Referer https://example.com
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
X-WCF-Fragment true
任何帮助或为我指出正确的方向将不胜感激。谢谢
从请求标头中可以很容易地看到您正在发送一些帖子数据。但是你没有提供它。我给你一个简单的例子,说明如何将 http 请求转换为 curl 命令。
假设您有此请求,您要var1
发布 2 个表单变量,var2
发布到 http://www.example.com/form.url
.请求如下所示,
POST /form.url HTTP/1.1
Host: www.example.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
var1=val1&var2=val2
当它变成卷曲它的样子时,
curl -d 'var1=val1&var2=val2' '
--header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' '
--header 'Accept-Encoding gzip, deflate' '
--header 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' '
'http://www.example.com/form.url'
注意:
这样,您可以添加尽可能多的标题。但最好只添加必要的标题。因为
curl
会为您传递大多数标头(例如Host
、User-Agent
、Content-Type
、Accept
等(。如果要管理 cookie,请在当前目录中添加一个文件
cookie.txt
,-b cookie.txt -c cookie.txt
命令切换到 curl。方法-b/--cookie <name=string/file> Cookie string or file to read cookies from (H) -c/--cookie-jar <file> Write cookies to this file after operation (H)
-d
开关代表将在请求正文中传递的数据字符串。-d/--data <data> HTTP POST data (H)
现在我希望你能建立你的命令。
在 http 中,有两种方法可以将数据发送到 URL:
- 发布
- 获取
在 GET 中,数据作为 URL 的一部分发送。您可能会看到如下所示的网址:
http://foo.com/bar/barfoo/script.js?param1=this¶m2=that¶m3=the_other
此 URL 正在将数据发送到 JavaScript http://foo.com/bar/barfoo/script.js
。它向此脚本发送以下参数:
-
param1
=this
-
param2
=that
-
param3
=the_other
在 POST 操作中,数据的发送方式不同,并且不会在 URL 本身中编码。使用Web表单时,这种情况经常发生(例如您要执行的操作(。您可以在curl
中使用 --form
参数来传递 POST 数据,就像您在 HTTP 表单中输入单词一样。
从 CURL 管理:
-F/--form <name=content>
(HTTP) This lets curl emulate a filled-in form in which a user has
pressed the submit button. This causes curl to POST data using
the Content-Type multipart/form-data according to RFC 2388. This
enables uploading of binary files etc. To force the 'content' part to
be a file, prefix the file name with an @ sign. To just get the
content part from a file, prefix the file name with the symbol <. The
difference between @ and < is then that @ makes a file get
attached in the post as a file upload, while the < makes a text
field and just get the contents for that text field from a file.
Example, to send your password file to the server, where 'password' is the
name of the form- field to which /etc/passwd will be the input:
curl -F password=@/etc/passwd www.mypasswords.com
To read content from stdin instead of a file, use - as the filename. This
goes for both @ and < constructs.
You can also tell curl what Content-Type to use by using 'type=', in a
manner similar to:
curl -F "web=@index.html;type=text/html" url.com
or
curl -F "name=daniel;type=text/foo" url.com
You can also explicitly change the name field of a file upload part by
setting filename=, like this:
curl -F "file=@localfile;filename=nameinpost" url.com
希望这有所帮助。
抱歉,curl 不做 javascript。
考虑
- 手动破译 JavaScript 并在 Perl/Ruby/Python 脚本中复制行为
- 使用硒
- 如何通过类比curl请求从JavaScript发出请求
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 如何在打开JavaScript的情况下使用cURL
- 如何在javascript中使用Curl
- 我可以使用ajax/javascript/jquery执行curl命令吗
- 如何使用cURL获取JavaScript加载的网络内容
- 如何从curl终端转换为javascript
- 提交HTML表单,该表单使用带有cURL的javascript进程
- 将 JavaScript Http Upload 脚本转换为 Curl 命令
- JavaScript $.get("curl.php",{ Array Value
- 如何使用PHP / CURL / Javascript等从 mca.gov.in 获取公司详细信息
- JavaScript 按钮使用 curl 单击
- 将这 5 行 JavaScript 代码转换为 cURL
- 在 bash 脚本中使用 cURL 的 Javascript 登录
- 通过 javascript 或 jquery 中的 curl 请求将值发布到 golang
- 使用 curl 执行 JavaScript 后获取源代码
- PHP curl - 可以检索 JavaScript 结果
- 通过curl和PHP提交JavaScript点击
- 有没有办法调用JavaScript API调用,因为我们可以有PHP curl调用
- cURL和Javascript可能的解决方案