Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式篡改http请求_C#_Httpwebrequest_Http Post - Fatal编程技术网

C# 以编程方式篡改http请求

C# 以编程方式篡改http请求,c#,httpwebrequest,http-post,C#,Httpwebrequest,Http Post,我需要登录到一个站点,我可以通过url.com/ssorequest?parameters=123这样的url进行登录。如果这是在im登录的地址中键入的,并被重定向到门户 现在,我应该通过一个http post请求以编程方式完成这项工作,但我无法让它工作,我被重定向到一个登录表单而不是门户,即我没有登录 我用Fiddler找出了这两种方法的区别。我发现有几个幕后的get请求是不同的。浏览器get请求向服务器发送cookie数据,而Fiddler post请求不发送cookie数据 当我使用fid

我需要登录到一个站点,我可以通过url.com/ssorequest?parameters=123这样的url进行登录。如果这是在im登录的地址中键入的,并被重定向到门户

现在,我应该通过一个http post请求以编程方式完成这项工作,但我无法让它工作,我被重定向到一个登录表单而不是门户,即我没有登录

我用Fiddler找出了这两种方法的区别。我发现有几个幕后的get请求是不同的。浏览器get请求向服务器发送cookie数据,而Fiddler post请求不发送cookie数据

当我使用fiddler重复浏览器第一次调用时,它也不会发送cookie数据。因此,它只有在我通过浏览器窗口进行操作时才起作用。除非我在fiddler中使用断点并篡改请求以包含cookie数据

问:为什么它在http post和从Fiddler发出请求时的行为与浏览器不同


问:有没有办法在我的C#app中以编程方式篡改发出的请求,而不编写自己的Fiddler应用程序?

很可能您遇到了cookie。它的工作方式是确保您使用浏览器中首次请求和加载的页面登录,并且cookie仅对一个请求有效,因此,如果您再次运行相同的请求,fiddler将无法登录

使用C#,您首先必须请求登录页面,并在cookie容器中获取此页面提供的cookie。下一次,当您将页面与数据一起发布时,您必须确保cookie已附加到请求中

编辑:

步骤1:浏览网站上的任何页面。这将启动会话。它还将为您提供会话cookie

步骤2:请求登录页面。将步骤1中获得的cookie与登录页面一起发送,以便它能够识别会话。这一步至关重要。在此阶段,根据站点使用的安全系统,可能有两种情况之一。它将发送一个安全cookie和会话cookie,或者在表单中添加一个隐藏变量和一个用作安全令牌的值。确保您获得此令牌/cookie


步骤2:在登录页面(或表单操作导致的任何页面)上发布登录信息,以及步骤1中获得的cookie/令牌。如果是令牌,请将其与登录信息一起包含在您的帖子数据中,如果是cookie,请将其添加到请求中。

但是如果我在fiddler中发出全新的get请求(就像从浏览器中发出的请求一样),它应该与浏览器中的get请求完全相同吗?(在fiddler中的第二个get请求中没有来自第一个请求的跟踪)。这只是一个新的请求,但由于某些原因,它的行为并不相同……只有一个区别。当您通过浏览器创建请求时,它会维护会话,而fiddler不会。它不知道以前的请求。为了使用fiddler或通过C#代码成功登录,您还必须发送上一个请求中的cookie,通过该请求获取登录页面。因此,我转到登录站点(在那里我获得会话id cookie)。请求下一个url并发送cookie。请求第三个url并发送第二个请求的响应?问题在于第二个url,它需要url中的会话ID以及包含相同ID的cookie。当我在fiddler中向它提供此信息时,我得到一个响应,说它是非法的SSL参数。。。