Skip to content

Commit dd0b563

Browse files
committed
Random User-Agent
1 parent 2ecf3e6 commit dd0b563

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

RedditAPICredentialViewController.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
#import <UIKit/UIKit.h>
21
#import <WebKit/WebKit.h>
2+
#import <UIKit/UIKit.h>
3+
4+
#define RANDSTRING [[NSProcessInfo processInfo] globallyUniqueString]
5+
#define RANDINT (arc4random() % 9) + 1
36

47
@interface RedditAPICredentialViewController : UIViewController <WKNavigationDelegate>
58

RedditAPICredentialViewController.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ - (void)pageDidUpdate:(WKWebView *)webView {
132132
Array.from(document.getElementsByName('description')).slice(-1)[0].value = \"i'm a fun reddit app\"; \
133133
Array.from(document.getElementsByName('about_url')).slice(-1)[0].value = \"https://google.com\"; \
134134
document.getElementById('redirect_uri').value = \"apollo://reddit-oauth\"; \
135-
Array.from(document.getElementsByName('name')).slice(-1)[0].value = \"Some app %@\";", [[NSProcessInfo processInfo] globallyUniqueString]];
135+
Array.from(document.getElementsByName('name')).slice(-1)[0].value = \"Some app %@\";", RANDSTRING];
136136
[webView evaluateJavaScript:prefillFormJS completionHandler:nil];
137137
}];
138138

Tweak.m

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,37 @@ static OSStatus SecItemUpdate_replacement(CFDictionaryRef query, CFDictionaryRef
5555
});
5656
}
5757

58+
// Reddit API Credentials
5859
Class _RDKOAuthCredential = objc_getClass("RDKOAuthCredential");
5960
if (_RDKOAuthCredential) {
6061

6162
Method clientIdMethod = class_getInstanceMethod(_RDKOAuthCredential, sel_registerName("clientIdentifier"));
6263
IMP replacementImp = imp_implementationWithBlock(^NSString *(id _self) {
6364
return [[NSUserDefaults standardUserDefaults] valueForKey:@"ApolloRedditAPIClientID"];
6465
});
66+
6567
method_setImplementation(clientIdMethod, replacementImp);
6668
}
6769

70+
// Randomize User-Agent
71+
Class _RDKClient = objc_getClass("RDKClient");
72+
if (_RDKClient) {
73+
74+
Method userAgentMethod = class_getInstanceMethod(_RDKClient, sel_registerName("userAgent"));
75+
IMP userAgentReplacementImp = imp_implementationWithBlock(^NSString *(id _self) {
76+
static dispatch_once_t once;
77+
static NSString *newUserAgent;
78+
dispatch_once(&once, ^{
79+
newUserAgent = [NSString stringWithFormat:@"iOS: com.%@.%@ v%d.%d.%d (by /u/%@)", RANDSTRING, RANDSTRING, RANDINT, RANDINT, RANDINT, RANDSTRING];
80+
});
81+
82+
return newUserAgent;
83+
});
84+
85+
method_setImplementation(userAgentMethod, userAgentReplacementImp);
86+
}
87+
88+
// Imgur API credentials
6889
Class _NSURLSessionConfiguration = objc_getClass("NSURLSessionConfiguration");
6990
Method setHeadersMethod = class_getInstanceMethod(_NSURLSessionConfiguration, sel_registerName("setHTTPAdditionalHeaders:"));
7091
IMP originalSetHeadersImp = method_getImplementation(setHeadersMethod);
@@ -84,7 +105,7 @@ static OSStatus SecItemUpdate_replacement(CFDictionaryRef query, CFDictionaryRef
84105
headers = newHeaders;
85106
}
86107

87-
((void (*)(id, SEL, id))originalSetHeadersImp)(_self, NSSelectorFromString(@"setHTTPAdditionalHeaders:"), headers);
108+
((void (*)(id, SEL, id))originalSetHeadersImp)(_self, sel_registerName("setHTTPAdditionalHeaders:"), headers);
88109
});
89110

90111
method_setImplementation(setHeadersMethod, replacementSetHeadersImp);

0 commit comments

Comments
 (0)