• 在PowerShell中访问http(InvokeWebRequest) 替代Curl


    Invoke-WebRequest简单用法
    1.用途
    Gets content from a web page on the Internet.
    获取http web请求访问内容

    2.语法Syntax
    Parameter Set: Default
    Invoke-WebRequest [-Uri] <Uri> [-Body <Object> ] [-Certificate <X509Certificate> ] [-CertificateThumbprint <String> ] [-ContentType <String> ] [-Credential <PSCredential> ] [-DisableKeepAlive] [-Headers <IDictionary> ] [-InFile <String> ] [-MaximumRedirection <Int32> ] [-Method <WebRequestMethod> {Default | Get | Head | Post | Put | Delete | Trace | Options | Merge | Patch} ] [-OutFile <String> ] [-PassThru] [-Proxy <Uri> ] [-ProxyCredential <PSCredential> ] [-ProxyUseDefaultCredentials] [-SessionVariable <String> ] [-TimeoutSec <Int32> ] [-TransferEncoding <String> {chunked | compress | deflate | gzip | identity} ] [-UseBasicParsing] [-UseDefaultCredentials] [-UserAgent <String> ] [-WebSession <WebRequestSession> ] [ <CommonParameters>]

    3.简单的几个用法
    3.1 Get请求
    PS C:\Users\rmiao> curl -URi https://www.google.com

    StatusCode : 200
    StatusDescription : OK
    Content : <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many speci..."
    RawContent : HTTP/1.1 200 OK
    X-XSS-Protection: 1; mode=block
    X-Frame-Options: SAMEORIGIN
    Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32"
    Vary: Accept-Encoding
    Transfer-Encoding: chunked
    会发现content内容被截断了。想要获取完整的content:

    ps> curl https://www.google.com | Select -ExpandProperty Content
    3.2添加header
    -Headers @{"accept"="application/json"}
    3.3指定Method
    -Method Get
    3.4将获取到的content输出到文件
    -OutFile 'c:\Users\rmiao\temp\content.txt'
    3.5表单提交
    For example:

    $R = Invoke-WebRequest http://website.com/login.aspx
    $R.Forms[0].Name = "MyName"
    $R.Forms[0].Password = "MyPassword"
    Invoke-RestMethod http://website.com/service.aspx -Body $R
    or

    Invoke-RestMethod http://website.com/service.aspx -Body $R.Forms[0]
    3.6内容筛选
    PS C:\Users\rmiao> $R = Invoke-WebRequest -URI http://www.bing.com?q=how+many+feet+in+a+mile
    PS C:\Users\rmiao> $R.AllElements | where {$_.innerhtml -like "*=*"} | Sort { $_.InnerHtml.Length } | Select InnerText -
    First 5

    innerText
    ---------
    =

    1
    Next
    =


    3.7一个登陆示例
    #发送一个登陆请求,声明一个sessionVariable 参数为fb, 将结果保存在$R
    #这个变量FB就是header.cookie等集合
    PS C:\Users\rmiao> $R=curl http://www.facebook.com/login.php -SessionVariable fb
    PS C:\Users\rmiao> $FB


    Headers : {}
    Cookies : System.Net.CookieContainer
    UseDefaultCredentials : False
    Credentials :
    Certificates :
    UserAgent : Mozilla/5.0 (Windows NT; Windows NT 6.3; en-US) WindowsPowerShell/4.0
    Proxy :
    MaximumRedirection : -1


    #将response响应结果中的第一个form属性赋值给变量Form
    PS C:\Users\rmiao> $Form=$R.Forms[0]
    PS C:\Users\rmiao> $Form.fields

    Key Value
    --- -----
    lsd AVqQqrLW
    display
    enable_profile_selector
    isprivate
    legacy_return 0
    profile_selector_ids
    return_session
    skip_api_login
    signed_next
    trynum 1
    u_0_0
    u_0_1
    lgnrnd 214945_qGeg
    lgnjs n
    email
    pass
    persistent
    default_persistent 1

    # 查看form
    PS C:\Users\rmiao> $Form | Format-List


    Id : login_form
    Method : post
    Action : /login.php?login_attempt=1&lwv=100
    Fields : {[lsd, AVqQqrLW], [display, ], [enable_profile_selector, ], [isprivate, ]...}


    #查看属性
    $Form.fields

    #设置账号密码
    $Form.Fields["email"] = "User01@Fabrikam.com"
    $Form.Fields["pass"] = "P@ssw0rd"

    #发送请求并保存结果为$R
    $R=Invoke-WebRequest -Uri ("https://www.facebook.com" + $Form.Action) -WebSession $FB -Method POST -Body $Form.Fields

    #查看结果
    PS C:\Users\rmiao> $R.StatusDescription
    OK
    虽然没有curl那么主流,但一样可以成为http访问的一个选择。

    参考
    https://technet.microsoft.com/en-us/library/hh849901.aspx

    引用源
    https://www.cnblogs.com/woshimrf/p/5899629.html

  • 相关阅读:
    5.我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
    sqylog 50道练习题
    sqylog练习题 2018.7.10
    WPF---依赖属性(一)
    C#基础知识---is与as
    C#基础知识---装箱与拆箱
    C#基础知识---Lambda表达式
    C#基础知识---Linq操作XML文件
    C#基础知识---匿名方法使用
    C#基础知识---?为何物
  • 原文地址:https://www.cnblogs.com/toumingbai/p/15650899.html
Copyright © 2020-2023  润新知