Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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
使用MobileSubstrate修改iPhone操作系统上的所有HTTP请求?_Iphone_Objective C_Http_Networking_Jailbreak - Fatal编程技术网

使用MobileSubstrate修改iPhone操作系统上的所有HTTP请求?

使用MobileSubstrate修改iPhone操作系统上的所有HTTP请求?,iphone,objective-c,http,networking,jailbreak,Iphone,Objective C,Http,Networking,Jailbreak,我想写一个MobileSubstrate()插件,它接受每个HTTP请求并修改URL。(原因非常复杂,需要一段时间来解释,所以请相信我,没有其他选择)。基本上,我需要知道我应该覆盖哪个Objective-C消息或C函数来拦截任何HTTP请求、修改URL并将请求发送回原始函数(这不应该只是应用程序发送的第一个请求,也应该是任何重定向)。我想它可能在NSURL或CFNetwork中,但不确定具体在哪里。此功能被替换后,应可用于任何应用程序和操作系统本身 编辑: 好的,下面是我想做的两个示例场景,请注

我想写一个MobileSubstrate()插件,它接受每个HTTP请求并修改URL。(原因非常复杂,需要一段时间来解释,所以请相信我,没有其他选择)。基本上,我需要知道我应该覆盖哪个Objective-C消息或C函数来拦截任何HTTP请求、修改URL并将请求发送回原始函数(这不应该只是应用程序发送的第一个请求,也应该是任何重定向)。我想它可能在NSURL或CFNetwork中,但不确定具体在哪里。此功能被替换后,应可用于任何应用程序和操作系统本身

编辑: 好的,下面是我想做的两个示例场景,请注意,要覆盖的方法应该是由从应用程序到操作系统的任何HTTP请求调用的方法:
1) MobileSafari中的用户在aaa.com/a.html中键入 2) aaa.com/a.html重定向到aaa.com/b.html
3) aaa.com/b.html加载bbb.com/c.png
我想更改请求,以便所有内容都已添加?I=j。
例如:将所有aaa.com/a.html更改为aaa.com/a.html?i=j,aaa.com/b.html?i=j,bbb.com/c.png?i=j?

还有一个:
1) 用户使用地图。应用程序
2) 谷歌地图试图加载Google.com/map1.png(我知道不是实际图像)

将google.com/map1.png更改为google.com/map1.png?i=j?

钩住以下方法,并用您编辑的
可变副本
交换请求

  • -[NSURLConnection sendWillSendRequest:redirectResponse::
  • -[NSURLConnection initWithRequest:委托:
  • –[NSURLConnection initWithRequest:delegate:startImmediately:][/code>
这不会重定向原始TCP套接字连接,只重定向通过标准API传输的HTTP请求


注意:在这样做时要非常小心。在我看来,重定向所有http请求违反了用户信任

钩住以下方法,并使用您编辑的
mutableCopy
交换请求

  • -[NSURLConnection sendWillSendRequest:redirectResponse::
  • -[NSURLConnection initWithRequest:委托:
  • –[NSURLConnection initWithRequest:delegate:startImmediately:][/code>
这不会重定向原始TCP套接字连接,只重定向通过标准API传输的HTTP请求


注意:在这样做时要非常小心。在我看来,重定向所有http请求违反了用户信任

好吧,下面是一个示例场景:1)MobileSafari中的用户在aaa.com/a.html中键入2)aaa.com/a.html重定向到aaa.com/b.html 3)aaa.com/b.html在我替换“-[NSURLConnection sendWillSendRequest:redirectResponse:”时加载bbb.com/c.png用我的代码将?i=j添加到所有html请求中,是否会将所有aaa.com/a.html更改为aaa.com/a.html?i=j,aaa.com/b.html?i=j,bbb.com/c.png?i=j?还有一个:1)用户使用Maps.app 2)谷歌地图尝试加载Google.com/map1.png(我知道不是实际图像)替换该方法会将Google.com/map1.png更改为Google.com/map1.png吗?i=j?另外,我正在编写的这个移动基板插件仅供内部使用。您可以将URL更改为您想要的任何位置。如何工作取决于你。另外,您可能需要我错过的其他挂钩,但这应该可以让您开始:)但是,如果,比如,用户正在使用基于CFNetwork的ASIHTTPRequest(就像NSURLConnection和pals一样),那么这将不起作用。如果你想要一个更“完整”的钩子,你可以降低一个级别并钩住CFNetwork做同样的事情。ckrames1234:正确。或者你可以降低到这个值并钩住所有套接字:)好的,下面是一个示例场景:1)手机中的用户在aaa.com/a.html中键入2)aaa.com/a.html重定向到aaa.com/b.html 3)aaa.com/b.html在我用代码替换“-[NSURLConnection sendWillSendRequest:redirectResponse:]”时加载bbb.com/c.png,以向所有html请求添加?I=j,它是否将所有aaa.com/a.html改为aaa.com/a.html?i=j,aaa.com/b.html?i=j,bbb.com/c.png?i=j?还有一个:1)用户使用Maps.app 2)谷歌地图尝试加载Google.com/map1.png(我知道不是实际图像)替换该方法会将Google.com/map1.png改为Google.com/map1.png吗?i=j?另外,我正在编写的这个移动基板插件仅供内部使用。您可以将URL更改为您想要的任何位置。如何工作取决于你。另外,您可能需要我错过的其他挂钩,但这应该可以让您开始:)但是,如果,比如,用户正在使用基于CFNetwork的ASIHTTPRequest(就像NSURLConnection和pals一样),那么这将不起作用。如果你想要一个更“完整”的钩子,你可以降低一个级别并钩住CFNetwork做同样的事情。ckrames1234:正确。或者你可以走到比这更低的地方,钩住所有的插座:)